diff --git a/.github/workflows/docker-image.yml b/.github/workflows/docker-image.yml
index 35af5321339a..f50656dd6d7f 100644
--- a/.github/workflows/docker-image.yml
+++ b/.github/workflows/docker-image.yml
@@ -10,6 +10,9 @@ on:
# schedule:
# - cron: '35 2 * * 1'
+permissions:
+ contents: read
+
jobs:
build:
runs-on: ubuntu-latest
diff --git a/.github/workflows/validate.yml b/.github/workflows/validate.yml
index 6cdc25043444..579531c4f765 100644
--- a/.github/workflows/validate.yml
+++ b/.github/workflows/validate.yml
@@ -2,6 +2,9 @@ name: Validate/Lint
on: [push, pull_request]
+permissions:
+ contents: read
+
jobs:
build:
runs-on: ${{ matrix.operating-system }}
diff --git a/.htaccess b/.htaccess
index d1543bd82d1e..c5f0349c0a76 100644
--- a/.htaccess
+++ b/.htaccess
@@ -1,374 +1,375 @@
-# BEGIN Expires Don't forget to enable mod_headers and mod_expires, you can do so by running a2enmod rewrite and a2enmod headers
-
- ExpiresActive On
- ExpiresDefault "access plus 1 seconds"
- ExpiresByType text/html "access plus 1 seconds"
- ExpiresByType image/gif "access plus 2592000 seconds"
- ExpiresByType image/jpeg "access plus 2592000 seconds"
- ExpiresByType image/png "access plus 2592000 seconds"
- ExpiresByType text/css "access plus 604800 seconds"
- ExpiresByType text/javascript "access plus 216000 seconds"
- ExpiresByType application/x-javascript "access plus 216000 seconds"
-
-
-
- Order Allow,Deny
- Deny from all
-
-
- Require all denied
-
-
-
-
- Order Allow,Deny
- Deny from all
-
-
- Require all denied
-
-
-
-
- Order Allow,Deny
- Deny from all
-
-
- Require all denied
-
-
-
-
- Order Allow,Deny
- Deny from all
-
-
- Require all denied
-
-
-# Disable directory browsing
-Options All -Indexes
-# END Expires
-# BEGIN Caching
-
-
- Header set Access-Control-Allow-Origin: *
-
-
- Header set Access-Control-Allow-Origin: *
- Header set Cache-Control "max-age=2592000, public"
-
-
- Header set Access-Control-Allow-Origin: *
- Header set Cache-Control "max-age=604800, public"
-
-
- Header set Access-Control-Allow-Origin: *
- Header set Cache-Control "max-age=216000, private"
-
-
- Header set Cache-Control "max-age=216000, public, must-revalidate"
-
-
- Header set Access-Control-Allow-Origin: *
- Header set Cache-Control "max-age=1, private, must-revalidate"
-
-
-# END Caching
-
- RewriteEngine on
- #VideoHLS for DRM
-
- RedirectMatch 404 /\.git
- #Compatibility
- RewriteRule ^view/css/fontawesome-free-5.5.0-web/(.*) node_modules/@fortawesome/fontawesome-free/$1
- RewriteRule ^view/js/jquery-3.5.1.min.js node_modules/jquery/dist/jquery.min.js
- RewriteRule ^view/js/seetalert/sweetalert.min.js node_modules/sweetalert/dist/sweetalert.min.js
- RewriteRule ^view/js/jquery-ui/(.*) node_modules/jquery-ui-dist/$1
-
-
- RewriteRule ^videos/webfonts/(fa-.*) view/css/fontawesome-free-5.5.0-web/webfonts/$1 [NC,L]
-
- RewriteRule ^playLink/?$ view/modePlayLink.php [QSA]
- RewriteRule ^videos/([^/]+)/(.*).key$ plugin/VideoHLS/downloadProtection.php?filename=$1&key=$2 [QSA]
-
- RewriteRule glyphicons-halflings-regular(.+)$ view/bootstrap/fonts/glyphicons-halflings-regular$1 [NC,L]
-
- RewriteRule ^meet/([0-9]+)/(.+)$ plugin/Meet/iframe.php?meet_schedule_id=$1&roomName=$2 [NC,L,QSA]
- RewriteRule ^meet/([0-9]+)$ plugin/Meet/iframe.php?meet_schedule_id=$1 [NC,L,QSA]
- RewriteRule ^live/([0-9]+)/(.+)/(.+)$ plugin/Live/?live_servers_id=$1&c=$2&live_index=$3 [NC,L,QSA]
- RewriteRule ^live/([0-9]+)/(.+)$ plugin/Live/?live_servers_id=$1&c=$2 [NC,L,QSA]
- RewriteRule ^live/?$ plugin/Gallery/view/mainAreaLive.php [NC,L,QSA]
-
- RewriteRule ^liveLink/([0-9]+).*$ plugin/LiveLinks/view/Live.php?link=$1 [NC,L,QSA]
- RewriteRule ^liveLinkEmbed/([0-9]+).*$ plugin/LiveLinks/view/Live.php?link=$1&embed=1 [NC,L,QSA]
-
- #main Files
- RewriteRule ^index.php$ view/index.php [NC,L]
- #RewriteRule ^index.php$ /view/index.php [NC,L]
- #RewriteRule ^$ view/ [NC,L]
- RewriteRule ^bootstrap/(.+)$ view/bootstrap/$1 [NC,L]
- RewriteRule bootstrap-select.js.map$ view/bootstrap/bootstrapSelectPicker/js/bootstrap-select.js.map$1 [NC,L]
- RewriteRule ^oembed/?(.+)$ view/oembed.php$1 [NC,L]
- RewriteRule ^js/(.+)$ view/js/$1 [NC,L]
- RewriteRule ^css/(.+)$ view/css/$1 [NC,L]
- RewriteRule ^img/(.+)$ view/img/$1 [NC,L]
- RewriteRule ^i/(.+)$ view/iframe.php?type=$1 [NC,L,QSA]
- RewriteRule ^videos/fonts/(.+)$ view/bootstrap/fonts/$1 [NC,L]
- RewriteRule ^page/([0-9]+)/?$ view/?page=$1 [QSA]
- RewriteRule ^videoOnly/?$ view/?type=video [NC,L]
- RewriteRule ^audioOnly/?$ view/?type=audio [NC,L]
- RewriteRule ^download$ view/downloadExternalVideo.php [NC,L]
- RewriteRule ^info$ view/info.php [NC,L]
- RewriteRule ^version$ view/info.php?version=1 [NC,L]
- RewriteRule ^downloadNow$ objects/downloadVideo.php [NC,L]
- RewriteRule ^getDownloadProgress$ objects/downloadVideoProgress.php [NC,L]
- RewriteRule ^status$ objects/status.json.php [NC,L]
- RewriteRule ^menu/([^!#$&'()*+,\/:;=?@[\]]+)/? plugin/TopMenu/seo.php?menuSeoUrlItem=$1 [QSA,L]
- RewriteRule ^admin/plugin/(.+)$ plugin/$1 [NC,L]
- RewriteRule ^trending/?$ view/trending.php [NC,L,QSA]
-
- RewriteRule ^about$ view/about.php [NC,L]
- RewriteRule ^contact$ view/contact.php [NC,L]
- RewriteRule ^sendEmail$ objects/sendEmail.json.php [NC,L]
- RewriteRule ^captcha$ objects/getCaptcha.php [NC,L]
- RewriteRule ^monitor/(.+)$ objects/ServerMonitor/$1 [NC,L]
- RewriteRule ^videosList$ view/videosList.php [NC,L]
- RewriteRule ^videosList/video/([^!#$&'()*,\/:;=?@[\]]+)/page/([0-9]+)/?$ view/videosList.php?videoName=$1&page=$2 [QSA]
- RewriteRule ^videosList/cat/([^!#$&'()*,\/:;=?@[\]]+)/video/([^!#$&'()*+,\/:;=?@[\]]+)/page/([0-9]+)/?$ view/videosList.php?catName=$1&videoName=$2&page=$3 [QSA]
-
- #for the category name
- RewriteRule ^cat/([^!#$&'()*+,\/:;=?@[\]]+)/?$ view/?catName=$1 [NC,L,QSA]
- RewriteRule ^cat/([^!#$&'()*+,\/:;=?@[\]]+)/page/([0-9]+)/?$ view/?catName=$1&page=$2 [NC,L,QSA]
-
- RewriteRule ^tag/([0-9-]+)(.*)?$ view/?tags_id=$1 [NC,L,QSA]
-
-
- #for the video name
- RewriteRule ^video/([0-9]+)/?$ view/?v=$1 [QSA]
- RewriteRule ^video/([^!#$&'()*,\/:;=?@[\]]+)/?$ view/?videoName=$1 [QSA]
- RewriteRule ^video/([^!#$&'()*,\/:;=?@[\]]+)/page/([0-9]+)/??$ view/?videoName=$1&page=$2 [QSA]
- RewriteRule ^v/([0-9a-zA-Z_.-]+)/?$ view/?v=$1 [QSA]
- RewriteRule ^v/([0-9a-zA-Z_.-]+)/page/([0-9]+)/??$ view/?v=$1&page=$2 [QSA]
- RewriteRule ^video/([0-9a-zA-Z_.-]+)/([^!#$&'()*,\/:;=?@[\]]+)/?$ view/?v=$1 [QSA]
- RewriteRule ^video/([0-9a-zA-Z_.-]+)/([^!#$&'()*,\/:;=?@[\]]+)/page/([0-9]+)/??$ view/?v=$1&page=$3 [QSA]
- RewriteRule ^evideo/([a-zA-z0-9=]+)/?$ view/?evideo=$1 [QSA]
-
- #for the video name
- RewriteRule ^cat/([^!#$&'()*,\/:;=?@[\]]+)/video/([^!#$&'()*+,\/:;=?@[\]]+)/?$ view/?catName=$1&videoName=$2 [QSA]
- RewriteRule ^cat/([^!#$&'()*,\/:;=?@[\]]+)/video/([^!#$&'()*+,\/:;=?@[\]]+)/page/([0-9]+)/?$ view/?catName=$1&videoName=$2&page=$3 [QSA]
- #for the embeded video name
- RewriteRule ^videoEmbeded/([0-9a-zA-Z_.-]+)/? view/videoEmbeded.php?v=$1 [QSA]
- RewriteRule ^videoEmbeded/([^!#$&'()*+,\/:;=?@[\]]+)/?$ view/videoEmbeded.php?videoName=$1 [QSA]
- RewriteRule ^cat/([^!#$&'()*,\/:;=?@[\]]+)/videoEmbeded/([^!#$&'()*+,\/:;=?@[\]]+)/?$ view/videoEmbeded.php?catName=$1&videoName=$2 [QSA]
- RewriteRule ^videoEmbed/([0-9a-zA-Z_.-]+)/? view/videoEmbeded.php?v=$1 [QSA]
- RewriteRule ^videoEmbed/([^!#$&'()*+,\/:;=?@[\]]+)/?$ view/videoEmbeded.php?videoName=$1 [QSA]
- RewriteRule ^vEmbed/([0-9a-zA-Z_.-]+)/?$ view/videoEmbeded.php?v=$1 [QSA]
- RewriteRule ^videoEmbed/([0-9a-zA-Z_.-]+)/([^!#$&'()*+,\/:;=?@[\]]+)/?$ view/videoEmbeded.php?v=$1 [QSA]
- RewriteRule ^evideoEmbed/([a-zA-z0-9=]+)/?$ view/videoEmbeded.php?evideo=$1 [QSA]
-
- RewriteRule ^plugin/([^!#$&'()*+,\/:;=?@[\]]+)/(.*)?$ plugin/$1/$2 [NC,L]
-
- RewriteRule ^upload$ view/mini-upload-form/ [NC,L]
- RewriteRule ^fileUpload$ view/mini-upload-form/upload.php [NC,L]
- RewriteRule ^uploadPoster/([0-9]+)/(jpg|gif)$ objects/uploadPoster.php?video_id=$1&type=$2 [NC,L]
-
- #for the Article name
- RewriteRule ^article/([^!#$&'()*,\/:;=?@[\]]+)/?$ view/?videoName=$1 [QSA]
- RewriteRule ^article/([^!#$&'()*,\/:;=?@[\]]+)/page/([0-9]+)/??$ view/?videoName=$1&page=$2 [QSA]
- RewriteRule ^article/([0-9a-zA-Z_.-]+)/([^!#$&'()*,\/:;=?@[\]]+)/?$ view/?v=$1 [QSA]
- RewriteRule ^article/([0-9a-zA-Z_.-]+)/([^!#$&'()*,\/:;=?@[\]]+)/page/([0-9]+)/??$ view/?v=$1&page=$3 [QSA]
-
- #for the embeded article name
- RewriteRule ^articleEmbed/([0-9a-zA-Z_.-]+)/? view/videoEmbeded.php?v=$1 [QSA]
- RewriteRule ^articleEmbed/([^!#$&'()*+,\/:;=?@[\]]+)/?$ view/videoEmbeded.php?videoName=$1 [QSA]
- RewriteRule ^cat/([^!#$&'()*,\/:;=?@[\]]+)/articleEmbed/([^!#$&'()*+,\/:;=?@[\]]+)/?$ view/videoEmbeded.php?catName=$1&videoName=$2 [QSA]
- RewriteRule ^articleEmbed/([0-9a-zA-Z_.-]+)/? view/videoEmbeded.php?v=$1 [QSA]
- RewriteRule ^articleEmbed/([^!#$&'()*+,\/:;=?@[\]]+)/?$ view/videoEmbeded.php?videoName=$1 [QSA]
- RewriteRule ^articleEmbed/([0-9a-zA-Z_.-]+)/([^!#$&'()*+,\/:;=?@[\]]+)/?$ view/videoEmbeded.php?v=$1 [QSA]
-
- #edit your own user
- RewriteRule ^user$ view/user.php [NC,L]
- RewriteRule ^user/([0-9]+)/foto.png$ view/userGetPhoto.php?users_id=$1 [QSA]
-
- #manager user
- RewriteRule ^users$ view/managerUsers.php [NC,L]
- RewriteRule ^users.json$ objects/users.json.php [NC,L]
- RewriteRule ^updateUser$ objects/userUpdate.json.php [NC,L]
- RewriteRule ^savePhoto$ objects/userSavePhoto.php [NC,L]
- RewriteRule ^saveBackground$ objects/userSaveBackground.php [NC,L]
- RewriteRule ^addNewUser$ objects/userAddNew.json.php [NC,L]
- RewriteRule ^deleteUser$ objects/userDelete.json.php [NC,L]
- RewriteRule ^recoverPass$ objects/userRecoverPass.php [NC,L]
- RewriteRule ^saveRecoverPassword$ objects/userRecoverPassSave.json.php [NC,L]
- RewriteRule ^signUp$ view/signUp.php [NC,L]
- RewriteRule ^createUser$ objects/userCreate.json.php [NC,L]
-
-
- RewriteRule ^usersGroups$ view/managerUsersGroups.php [NC,L]
- RewriteRule ^usersGroups.json$ objects/usersGroups.json.php [NC,L]
- RewriteRule ^addNewUserGroups$ objects/userGroupsAddNew.json.php [NC,L]
- RewriteRule ^deleteUserGroups$ objects/userGroupsDelete.json.php [NC,L]
-
- #manager category
- RewriteRule ^categories$ view/managerCategories.php [NC,L]
- RewriteRule ^categories.json$ objects/categories.json.php [NC,L]
- RewriteRule ^addNewCategory$ objects/categoryAddNew.json.php [NC,L]
- RewriteRule ^deleteCategory$ objects/categoryDelete.json.php [NC,L]
- RewriteRule ^listCategories$ view/listCategories.php [NC,L]
-
- #manager plugin
- RewriteRule ^plugins$ view/managerPlugins.php [NC,L]
- RewriteRule ^plugins.json$ objects/plugins.json.php [NC,L]
- RewriteRule ^pluginsAvailable.json$ objects/pluginsAvailable.json.php [NC,L]
- RewriteRule ^pluginImport.json$ objects/pluginImport.json.php [NC,L]
- RewriteRule ^switchPlugin$ objects/pluginSwitch.json.php [NC,L]
- RewriteRule ^addDataObjectPlugin.json$ objects/pluginAddDataObject.json.php [NC,L]
- RewriteRule ^runDBScriptPlugin.json$ objects/pluginRunDatabaseScript.json.php [NC,L]
-
- #manager playList
- RewriteRule ^epg.xml$ plugin/PlayLists/epg.xml.php [NC,L,QSA]
- RewriteRule ^epg.json$ plugin/PlayLists/epg.json.php [NC,L,QSA]
- RewriteRule ^epg.html$ plugin/PlayLists/epg.html.php [NC,L,QSA]
- RewriteRule ^epg$ plugin/PlayLists/epg.php [NC,L,QSA]
- RewriteRule ^tv$ plugin/PlayLists/tv.php [NC,L,QSA]
- RewriteRule ^iptv$ plugin/PlayLists/iptv.php [NC,L,QSA]
- RewriteRule ^iptv/([^/]+)/?$ plugin/PlayLists/iptv.php?channelName=$1 [NC,L,QSA]
- RewriteRule ^playLists.json$ objects/playlists.json.php [NC,L]
- RewriteRule ^playListsVideos.json$ objects/playlistsVideos.json.php [NC,L]
- RewriteRule ^playListsFromUser.json/([0-9]+)/?$ objects/playlistsFromUser.json.php?users_id=$1 [NC,L]
- RewriteRule ^addNewPlayList$ objects/playlistAddNew.json.php [NC,L]
- RewriteRule ^playListAddVideo.json$ objects/playListAddVideo.json.php [NC,L]
- RewriteRule ^playlist/([0-9]+)/([0-9]+)/?$ view/?playlist_id=$1&playlist_index=$2 [NC,L]
- RewriteRule ^playlist/([0-9]+)/?$ view/?playlist_id=$1 [NC,L]
- RewriteRule ^removeVideoFromPlaylist/?$ objects/playlistRemoveVideo.php [NC,L]
- RewriteRule ^removePlaylist/?$ objects/playlistRemove.php [NC,L]
- RewriteRule ^renamePlaylist/?$ objects/playlistRename.php [NC,L]
- RewriteRule ^sortPlaylist/?$ objects/playlistSort.php [NC,L]
- RewriteRule ^mrss/?$ feed/index.php?mrss=1 [QSA]
- RewriteRule ^roku.json$ feed/index.php?roku=1 [QSA]
- RewriteRule ^channel/([^/]+)/roku.json$ feed/index.php?channelName=$1&roku=1 [QSA]
- RewriteRule ^channel/([^/]+)/feed/?$ feed/index.php?channelName=$1 [QSA]
- RewriteRule ^channel/([^/]+)/rss/?$ feed/index.php?channelName=$1 [QSA]
- RewriteRule ^channel/([^/]+)/mrss/?$ feed/index.php?channelName=$1&mrss=1 [QSA]
- RewriteRule ^channel/([^/]+) view/channel.php?channelName=$1 [QSA]
- RewriteRule ^channel/?$ view/channel.php [QSA]
- RewriteRule ^channels/?$ view/channels.php [NC,L]
-
- #playlist alias
- RewriteRule ^programs.json$ objects/playlists.json.php [QSA]
- RewriteRule ^program/([0-9]+)/([0-9]+)(/.*)?$ view/?playlist_id=$1&playlist_index=$2 [QSA]
- RewriteRule ^program/([0-9]+)(/.*)?$ view/?playlist_id=$1 [QSA]
- RewriteRule ^viewProgram/([0-9]+).*?$ view/channelProgram.php?program_id=$1 [QSA]
- RewriteRule ^favorite/?$ view/?playlist_name=favorite [QSA]
- RewriteRule ^watch-later/?$ view/?playlist_name=watch-later [QSA]
-
- #manager videos
- RewriteRule ^orphanFiles$ view/orphanFiles.php [NC,L]
- RewriteRule ^mvideos$ view/managerVideos.php [NC,L]
- RewriteRule ^videos.json$ objects/videos.json.php [NC,L]
- RewriteRule ^videosAndroid.json$ objects/videosAndroid.json.php [NC,L]
- RewriteRule ^videoAndroid.json$ objects/videoAndroid.json.php [NC,L]
- RewriteRule ^deleteVideo$ objects/videoDelete.json.php [NC,L]
- RewriteRule ^addNewVideo$ objects/videoAddNew.json.php [NC,L]
- RewriteRule ^refreshVideo$ objects/videoRefresh.json.php [NC,L]
- RewriteRule ^setStatusVideo$ objects/videoStatus.json.php [NC,L]
- RewriteRule ^setCategoryVideo$ objects/videoCategory.json.php [NC,L]
- RewriteRule ^rotateVideo$ objects/videoRotate.json.php [NC,L]
-
-
- # Subscribes
- RewriteRule ^subscribes$ view/managerSubscribes.php [NC,L]
- RewriteRule ^subscribes.json$ objects/subscribes.json.php [NC,L]
- RewriteRule ^subscribe.json$ objects/subscribe.json.php [NC,L]
- RewriteRule ^notifySubscribers.json$ objects/notifySubscribers.json.php [NC,L]
-
-
- RewriteRule ^aVideoQueueEncoder.json$ objects/aVideoQueueEncoder.json.php [NC,L]
- RewriteRule ^aVideoEncoder.json$ objects/aVideoEncoder.json.php [NC,L]
- RewriteRule ^aVideoEncoderChunk.json$ objects/aVideoEncoderChunk.json.php [NC,L]
-
- #comment
- RewriteRule ^comments$ view/managerComments.php [NC,L]
- RewriteRule ^saveComment$ objects/commentAddNew.json.php [NC,L]
- RewriteRule ^comments.json/([0-9]+)$ objects/comments.json.php?video_id=$1 [NC,L]
-
- RewriteRule ^login$ objects/login.json.php [NC,L]
- RewriteRule ^logoff$ objects/logoff.php [NC,L]
-
- RewriteRule ^like$ objects/like.json.php?like=1 [QSA]
- RewriteRule ^dislike$ objects/like.json.php?like=-1 [QSA]
-
-
- #manager configuration
-
- RewriteRule ^update/?$ view/update.php [NC,L]
- RewriteRule ^siteConfigurations$ view/configurations.php [NC,L]
- RewriteRule ^updateConfig$ objects/configurationUpdate.json.php [NC,L]
-
- RewriteRule ^charts$ view/charts.php [NC,L]
-
- RewriteRule ^help$ view/help.php [NC,L]
-
- # YouTube Sync
- RewriteRule ^youtubeUpload$ objects/youtubeUpload.json.php [NC,L]
-
- RewriteRule ^googleAdView$ view/googleAdView.php [NC,L]
-
- RewriteRule ^notifications.json$ objects/notifications.json.php [NC,L]
-
- RewriteRule ^sitemap.xml$ view/sitemap.xml.php [NC,L]
- RewriteRule ^robots.txt$ view/robots.txt.php [NC,L]
- RewriteRule ^manifest.json$ view/manifest.json.php [NC,L]
-
- RewriteRule ^videos/(.*)/index.m3u8$ view/hls.php?videoDirectory=$1 [NC,L,QSA]
- RewriteRule ^videos/(.*)/index.m3u8.mp4$ view/hls.php?playHLSasMP4=1&videoDirectory=$1 [NC,L,QSA]
-
- RewriteRule ^vast.xml/?([0-9]+)?$ plugin/AD_Server/VAST.php?campaign_has_videos_id=$1 [NC,L]
-
-
-
- RewriteRule ^videos/([_A-Za-z0-9.-]+/)?([^!#$&'()*+,\/:;=?@[\]]+(\.(mp4|webm|m3u8|mp3|ogg)))$ view/xsendfile.php?file=$2 [QSA]
- RewriteRule ^videos/cache/download/([_A-Za-z0-9.-]+/)?([^!#$&'()*+,\/:;=?@[\]]+(\.(mp4|webm|m3u8|mp3|ogg)))$ view/xsendfile.php?file=$2&cacheDownload=1 [QSA]
-
-
- # if image do not exists
- RewriteCond %{REQUEST_URI} \.(jpg|jpeg|gif|png|ico)$ [NC]
- RewriteCond %{REQUEST_FILENAME} !-f
- RewriteCond %{REQUEST_FILENAME} !-d
- RewriteRule (.*)$ img/image404.php?image=$1 [NC,L]
-
- RewriteCond %{REQUEST_FILENAME} !-f
- RewriteCond %{REQUEST_FILENAME} !-d
- RewriteCond %{REQUEST_FILENAME} !-l
- RewriteRule .*$ view/error.php [NC,L]
-
-
-
- # Compress HTML, CSS, JavaScript, Text, XML and fonts
- AddOutputFilterByType DEFLATE application/javascript
- AddOutputFilterByType DEFLATE application/rss+xml
- AddOutputFilterByType DEFLATE application/vnd.ms-fontobject
- AddOutputFilterByType DEFLATE application/x-font
- AddOutputFilterByType DEFLATE application/x-font-opentype
- AddOutputFilterByType DEFLATE application/x-font-otf
- AddOutputFilterByType DEFLATE application/x-font-truetype
- AddOutputFilterByType DEFLATE application/x-font-ttf
- AddOutputFilterByType DEFLATE application/x-javascript
- AddOutputFilterByType DEFLATE application/xhtml+xml
- AddOutputFilterByType DEFLATE application/xml
- AddOutputFilterByType DEFLATE font/opentype
- AddOutputFilterByType DEFLATE font/otf
- AddOutputFilterByType DEFLATE font/ttf
- AddOutputFilterByType DEFLATE image/svg+xml
- AddOutputFilterByType DEFLATE image/x-icon
- AddOutputFilterByType DEFLATE text/css
- AddOutputFilterByType DEFLATE text/html
- AddOutputFilterByType DEFLATE text/javascript
- AddOutputFilterByType DEFLATE text/plain
- AddOutputFilterByType DEFLATE text/xml
-
-
-AddType text/vtt .vtt
-#php_value post_max_size 4G
-#php_value upload_max_filesize 4G
+# BEGIN Expires Don't forget to enable mod_headers and mod_expires, you can do so by running a2enmod rewrite and a2enmod headers
+
+ ExpiresActive On
+ ExpiresDefault "access plus 1 seconds"
+ ExpiresByType text/html "access plus 1 seconds"
+ ExpiresByType image/gif "access plus 2592000 seconds"
+ ExpiresByType image/jpeg "access plus 2592000 seconds"
+ ExpiresByType image/png "access plus 2592000 seconds"
+ ExpiresByType text/css "access plus 604800 seconds"
+ ExpiresByType text/javascript "access plus 216000 seconds"
+ ExpiresByType application/x-javascript "access plus 216000 seconds"
+
+
+
+ Order Allow,Deny
+ Deny from all
+
+
+ Require all denied
+
+
+
+
+ Order Allow,Deny
+ Deny from all
+
+
+ Require all denied
+
+
+
+
+ Order Allow,Deny
+ Deny from all
+
+
+ Require all denied
+
+
+
+
+ Order Allow,Deny
+ Deny from all
+
+
+ Require all denied
+
+
+# Disable directory browsing
+Options All -Indexes
+# END Expires
+# BEGIN Caching
+
+
+ Header set Access-Control-Allow-Origin: *
+
+
+ Header set Access-Control-Allow-Origin: *
+ Header set Cache-Control "max-age=2592000, public"
+
+
+ Header set Access-Control-Allow-Origin: *
+ Header set Cache-Control "max-age=604800, public"
+
+
+ Header set Access-Control-Allow-Origin: *
+ Header set Cache-Control "max-age=216000, private"
+
+
+ Header set Cache-Control "max-age=216000, public, must-revalidate"
+
+
+ Header set Access-Control-Allow-Origin: *
+ Header set Cache-Control "max-age=1, private, must-revalidate"
+
+
+# END Caching
+
+ RewriteEngine on
+ #VideoHLS for DRM
+
+ RedirectMatch 404 /\.git
+ #Compatibility
+ RewriteRule ^view/css/fontawesome-free-5.5.0-web/(.*) node_modules/@fortawesome/fontawesome-free/$1
+ RewriteRule ^view/js/jquery-3.5.1.min.js node_modules/jquery/dist/jquery.min.js
+ RewriteRule ^view/js/seetalert/sweetalert.min.js node_modules/sweetalert/dist/sweetalert.min.js
+ RewriteRule ^view/js/jquery-ui/(.*) node_modules/jquery-ui-dist/$1
+
+
+ RewriteRule ^videos/webfonts/(fa-.*) view/css/fontawesome-free-5.5.0-web/webfonts/$1 [NC,L]
+
+ RewriteRule ^playLink/?$ view/modePlayLink.php [QSA]
+ RewriteRule ^videos/([^/]+)/(.*).key$ plugin/VideoHLS/downloadProtection.php?filename=$1&key=$2 [QSA]
+
+ RewriteRule glyphicons-halflings-regular(.+)$ view/bootstrap/fonts/glyphicons-halflings-regular$1 [NC,L]
+
+ RewriteRule ^meet/([0-9]+)/(.+)$ plugin/Meet/iframe.php?meet_schedule_id=$1&roomName=$2 [NC,L,QSA]
+ RewriteRule ^meet/([0-9]+)$ plugin/Meet/iframe.php?meet_schedule_id=$1 [NC,L,QSA]
+ RewriteRule ^live/([0-9]+)/(.+)/ls/([0-9]+)/?$ plugin/Live/?live_servers_id=$1&c=$2&live_schedule=$3 [NC,L,QSA]
+ RewriteRule ^live/([0-9]+)/(.+)/(.+)$ plugin/Live/?live_servers_id=$1&c=$2&live_index=$3 [NC,L,QSA]
+ RewriteRule ^live/([0-9]+)/(.+)$ plugin/Live/?live_servers_id=$1&c=$2 [NC,L,QSA]
+ RewriteRule ^live/?$ plugin/Gallery/view/mainAreaLive.php [NC,L,QSA]
+
+ RewriteRule ^liveLink/([0-9]+).*$ plugin/LiveLinks/view/Live.php?link=$1 [NC,L,QSA]
+ RewriteRule ^liveLinkEmbed/([0-9]+).*$ plugin/LiveLinks/view/Live.php?link=$1&embed=1 [NC,L,QSA]
+
+ #main Files
+ RewriteRule ^index.php$ view/index.php [NC,L]
+ #RewriteRule ^index.php$ /view/index.php [NC,L]
+ #RewriteRule ^$ view/ [NC,L]
+ RewriteRule ^bootstrap/(.+)$ view/bootstrap/$1 [NC,L]
+ RewriteRule bootstrap-select.js.map$ view/bootstrap/bootstrapSelectPicker/js/bootstrap-select.js.map$1 [NC,L]
+ RewriteRule ^oembed/?(.+)$ view/oembed.php$1 [NC,L]
+ RewriteRule ^js/(.+)$ view/js/$1 [NC,L]
+ RewriteRule ^css/(.+)$ view/css/$1 [NC,L]
+ RewriteRule ^img/(.+)$ view/img/$1 [NC,L]
+ RewriteRule ^i/(.+)$ view/iframe.php?type=$1 [NC,L,QSA]
+ RewriteRule ^videos/fonts/(.+)$ view/bootstrap/fonts/$1 [NC,L]
+ RewriteRule ^page/([0-9]+)/?$ view/?page=$1 [QSA]
+ RewriteRule ^videoOnly/?$ view/?type=video [NC,L]
+ RewriteRule ^audioOnly/?$ view/?type=audio [NC,L]
+ RewriteRule ^download$ view/downloadExternalVideo.php [NC,L]
+ RewriteRule ^info$ view/info.php [NC,L]
+ RewriteRule ^version$ view/info.php?version=1 [NC,L]
+ RewriteRule ^downloadNow$ objects/downloadVideo.php [NC,L]
+ RewriteRule ^getDownloadProgress$ objects/downloadVideoProgress.php [NC,L]
+ RewriteRule ^status$ objects/status.json.php [NC,L]
+ RewriteRule ^menu/([^!#$&'()*+,\/:;=?@[\]]+)/? plugin/TopMenu/seo.php?menuSeoUrlItem=$1 [QSA,L]
+ RewriteRule ^admin/plugin/(.+)$ plugin/$1 [NC,L]
+ RewriteRule ^trending/?$ view/trending.php [NC,L,QSA]
+
+ RewriteRule ^about$ view/about.php [NC,L]
+ RewriteRule ^contact$ view/contact.php [NC,L]
+ RewriteRule ^sendEmail$ objects/sendEmail.json.php [NC,L]
+ RewriteRule ^captcha$ objects/getCaptcha.php [NC,L]
+ RewriteRule ^monitor/(.+)$ objects/ServerMonitor/$1 [NC,L]
+ RewriteRule ^videosList$ view/videosList.php [NC,L]
+ RewriteRule ^videosList/video/([^!#$&'()*,\/:;=?@[\]]+)/page/([0-9]+)/?$ view/videosList.php?videoName=$1&page=$2 [QSA]
+ RewriteRule ^videosList/cat/([^!#$&'()*,\/:;=?@[\]]+)/video/([^!#$&'()*+,\/:;=?@[\]]+)/page/([0-9]+)/?$ view/videosList.php?catName=$1&videoName=$2&page=$3 [QSA]
+
+ #for the category name
+ RewriteRule ^cat/([^!#$&'()*+,\/:;=?@[\]]+)/?$ view/?catName=$1 [NC,L,QSA]
+ RewriteRule ^cat/([^!#$&'()*+,\/:;=?@[\]]+)/page/([0-9]+)/?$ view/?catName=$1&page=$2 [NC,L,QSA]
+
+ RewriteRule ^tag/([0-9-]+)(.*)?$ view/?tags_id=$1 [NC,L,QSA]
+
+
+ #for the video name
+ RewriteRule ^video/([0-9]+)/?$ view/?v=$1 [QSA]
+ RewriteRule ^video/([^!#$&'()*,\/:;=?@[\]]+)/?$ view/?videoName=$1 [QSA]
+ RewriteRule ^video/([^!#$&'()*,\/:;=?@[\]]+)/page/([0-9]+)/??$ view/?videoName=$1&page=$2 [QSA]
+ RewriteRule ^v/([0-9a-zA-Z_.-]+)/?$ view/?v=$1 [QSA]
+ RewriteRule ^v/([0-9a-zA-Z_.-]+)/page/([0-9]+)/??$ view/?v=$1&page=$2 [QSA]
+ RewriteRule ^video/([0-9a-zA-Z_.-]+)/([^!#$&'()*,\/:;=?@[\]]+)/?$ view/?v=$1 [QSA]
+ RewriteRule ^video/([0-9a-zA-Z_.-]+)/([^!#$&'()*,\/:;=?@[\]]+)/page/([0-9]+)/??$ view/?v=$1&page=$3 [QSA]
+ RewriteRule ^evideo/([a-zA-z0-9=]+)/?$ view/?evideo=$1 [QSA]
+
+ #for the video name
+ RewriteRule ^cat/([^!#$&'()*,\/:;=?@[\]]+)/video/([^!#$&'()*+,\/:;=?@[\]]+)/?$ view/?catName=$1&videoName=$2 [QSA]
+ RewriteRule ^cat/([^!#$&'()*,\/:;=?@[\]]+)/video/([^!#$&'()*+,\/:;=?@[\]]+)/page/([0-9]+)/?$ view/?catName=$1&videoName=$2&page=$3 [QSA]
+ #for the embeded video name
+ RewriteRule ^videoEmbeded/([0-9a-zA-Z_.-]+)/? view/videoEmbeded.php?v=$1 [QSA]
+ RewriteRule ^videoEmbeded/([^!#$&'()*+,\/:;=?@[\]]+)/?$ view/videoEmbeded.php?videoName=$1 [QSA]
+ RewriteRule ^cat/([^!#$&'()*,\/:;=?@[\]]+)/videoEmbeded/([^!#$&'()*+,\/:;=?@[\]]+)/?$ view/videoEmbeded.php?catName=$1&videoName=$2 [QSA]
+ RewriteRule ^videoEmbed/([0-9a-zA-Z_.-]+)/? view/videoEmbeded.php?v=$1 [QSA]
+ RewriteRule ^videoEmbed/([^!#$&'()*+,\/:;=?@[\]]+)/?$ view/videoEmbeded.php?videoName=$1 [QSA]
+ RewriteRule ^vEmbed/([0-9a-zA-Z_.-]+)/?$ view/videoEmbeded.php?v=$1 [QSA]
+ RewriteRule ^videoEmbed/([0-9a-zA-Z_.-]+)/([^!#$&'()*+,\/:;=?@[\]]+)/?$ view/videoEmbeded.php?v=$1 [QSA]
+ RewriteRule ^evideoEmbed/([a-zA-z0-9=]+)/?$ view/videoEmbeded.php?evideo=$1 [QSA]
+
+ RewriteRule ^plugin/([^!#$&'()*+,\/:;=?@[\]]+)/(.*)?$ plugin/$1/$2 [NC,L]
+
+ RewriteRule ^upload$ view/mini-upload-form/ [NC,L]
+ RewriteRule ^fileUpload$ view/mini-upload-form/upload.php [NC,L]
+ RewriteRule ^uploadPoster/([0-9]+)/(jpg|gif)$ objects/uploadPoster.php?video_id=$1&type=$2 [NC,L]
+
+ #for the Article name
+ RewriteRule ^article/([^!#$&'()*,\/:;=?@[\]]+)/?$ view/?videoName=$1 [QSA]
+ RewriteRule ^article/([^!#$&'()*,\/:;=?@[\]]+)/page/([0-9]+)/??$ view/?videoName=$1&page=$2 [QSA]
+ RewriteRule ^article/([0-9a-zA-Z_.-]+)/([^!#$&'()*,\/:;=?@[\]]+)/?$ view/?v=$1 [QSA]
+ RewriteRule ^article/([0-9a-zA-Z_.-]+)/([^!#$&'()*,\/:;=?@[\]]+)/page/([0-9]+)/??$ view/?v=$1&page=$3 [QSA]
+
+ #for the embeded article name
+ RewriteRule ^articleEmbed/([0-9a-zA-Z_.-]+)/? view/videoEmbeded.php?v=$1 [QSA]
+ RewriteRule ^articleEmbed/([^!#$&'()*+,\/:;=?@[\]]+)/?$ view/videoEmbeded.php?videoName=$1 [QSA]
+ RewriteRule ^cat/([^!#$&'()*,\/:;=?@[\]]+)/articleEmbed/([^!#$&'()*+,\/:;=?@[\]]+)/?$ view/videoEmbeded.php?catName=$1&videoName=$2 [QSA]
+ RewriteRule ^articleEmbed/([0-9a-zA-Z_.-]+)/? view/videoEmbeded.php?v=$1 [QSA]
+ RewriteRule ^articleEmbed/([^!#$&'()*+,\/:;=?@[\]]+)/?$ view/videoEmbeded.php?videoName=$1 [QSA]
+ RewriteRule ^articleEmbed/([0-9a-zA-Z_.-]+)/([^!#$&'()*+,\/:;=?@[\]]+)/?$ view/videoEmbeded.php?v=$1 [QSA]
+
+ #edit your own user
+ RewriteRule ^user$ view/user.php [NC,L]
+ RewriteRule ^user/([0-9]+)/foto.png$ view/userGetPhoto.php?users_id=$1 [QSA]
+
+ #manager user
+ RewriteRule ^users$ view/managerUsers.php [NC,L]
+ RewriteRule ^users.json$ objects/users.json.php [NC,L]
+ RewriteRule ^updateUser$ objects/userUpdate.json.php [NC,L]
+ RewriteRule ^savePhoto$ objects/userSavePhoto.php [NC,L]
+ RewriteRule ^saveBackground$ objects/userSaveBackground.php [NC,L]
+ RewriteRule ^addNewUser$ objects/userAddNew.json.php [NC,L]
+ RewriteRule ^deleteUser$ objects/userDelete.json.php [NC,L]
+ RewriteRule ^recoverPass$ objects/userRecoverPass.php [NC,L]
+ RewriteRule ^saveRecoverPassword$ objects/userRecoverPassSave.json.php [NC,L]
+ RewriteRule ^signUp$ view/signUp.php [NC,L]
+ RewriteRule ^createUser$ objects/userCreate.json.php [NC,L]
+
+
+ RewriteRule ^usersGroups$ view/managerUsersGroups.php [NC,L]
+ RewriteRule ^usersGroups.json$ objects/usersGroups.json.php [NC,L]
+ RewriteRule ^addNewUserGroups$ objects/userGroupsAddNew.json.php [NC,L]
+ RewriteRule ^deleteUserGroups$ objects/userGroupsDelete.json.php [NC,L]
+
+ #manager category
+ RewriteRule ^categories$ view/managerCategories.php [NC,L]
+ RewriteRule ^categories.json$ objects/categories.json.php [NC,L]
+ RewriteRule ^addNewCategory$ objects/categoryAddNew.json.php [NC,L]
+ RewriteRule ^deleteCategory$ objects/categoryDelete.json.php [NC,L]
+ RewriteRule ^listCategories$ view/listCategories.php [NC,L]
+
+ #manager plugin
+ RewriteRule ^plugins$ view/managerPlugins.php [NC,L]
+ RewriteRule ^plugins.json$ objects/plugins.json.php [NC,L]
+ RewriteRule ^pluginsAvailable.json$ objects/pluginsAvailable.json.php [NC,L]
+ RewriteRule ^pluginImport.json$ objects/pluginImport.json.php [NC,L]
+ RewriteRule ^switchPlugin$ objects/pluginSwitch.json.php [NC,L]
+ RewriteRule ^addDataObjectPlugin.json$ objects/pluginAddDataObject.json.php [NC,L]
+ RewriteRule ^runDBScriptPlugin.json$ objects/pluginRunDatabaseScript.json.php [NC,L]
+
+ #manager playList
+ RewriteRule ^epg.xml$ plugin/PlayLists/epg.xml.php [NC,L,QSA]
+ RewriteRule ^epg.json$ plugin/PlayLists/epg.json.php [NC,L,QSA]
+ RewriteRule ^epg.html$ plugin/PlayLists/epg.html.php [NC,L,QSA]
+ RewriteRule ^epg$ plugin/PlayLists/epg.php [NC,L,QSA]
+ RewriteRule ^tv$ plugin/PlayLists/tv.php [NC,L,QSA]
+ RewriteRule ^iptv$ plugin/PlayLists/iptv.php [NC,L,QSA]
+ RewriteRule ^iptv/([^/]+)/?$ plugin/PlayLists/iptv.php?channelName=$1 [NC,L,QSA]
+ RewriteRule ^playLists.json$ objects/playlists.json.php [NC,L]
+ RewriteRule ^playListsVideos.json$ objects/playlistsVideos.json.php [NC,L]
+ RewriteRule ^playListsFromUser.json/([0-9]+)/?$ objects/playlistsFromUser.json.php?users_id=$1 [NC,L]
+ RewriteRule ^addNewPlayList$ objects/playlistAddNew.json.php [NC,L]
+ RewriteRule ^playListAddVideo.json$ objects/playListAddVideo.json.php [NC,L]
+ RewriteRule ^playlist/([0-9]+)/([0-9]+)/?$ view/?playlist_id=$1&playlist_index=$2 [NC,L]
+ RewriteRule ^playlist/([0-9]+)/?$ view/?playlist_id=$1 [NC,L]
+ RewriteRule ^removeVideoFromPlaylist/?$ objects/playlistRemoveVideo.php [NC,L]
+ RewriteRule ^removePlaylist/?$ objects/playlistRemove.php [NC,L]
+ RewriteRule ^renamePlaylist/?$ objects/playlistRename.php [NC,L]
+ RewriteRule ^sortPlaylist/?$ objects/playlistSort.php [NC,L]
+ RewriteRule ^mrss/?$ feed/index.php?mrss=1 [QSA]
+ RewriteRule ^roku.json$ feed/index.php?roku=1 [QSA]
+ RewriteRule ^channel/([^/]+)/roku.json$ feed/index.php?channelName=$1&roku=1 [QSA]
+ RewriteRule ^channel/([^/]+)/feed/?$ feed/index.php?channelName=$1 [QSA]
+ RewriteRule ^channel/([^/]+)/rss/?$ feed/index.php?channelName=$1 [QSA]
+ RewriteRule ^channel/([^/]+)/mrss/?$ feed/index.php?channelName=$1&mrss=1 [QSA]
+ RewriteRule ^channel/([^/]+) view/channel.php?channelName=$1 [QSA]
+ RewriteRule ^channel/?$ view/channel.php [QSA]
+ RewriteRule ^channels/?$ view/channels.php [NC,L]
+
+ #playlist alias
+ RewriteRule ^programs.json$ objects/playlists.json.php [QSA]
+ RewriteRule ^program/([0-9]+)/([0-9]+)(/.*)?$ view/?playlist_id=$1&playlist_index=$2 [QSA]
+ RewriteRule ^program/([0-9]+)(/.*)?$ view/?playlist_id=$1 [QSA]
+ RewriteRule ^viewProgram/([0-9]+).*?$ view/channelProgram.php?program_id=$1 [QSA]
+ RewriteRule ^favorite/?$ view/?playlist_name=favorite [QSA]
+ RewriteRule ^watch-later/?$ view/?playlist_name=watch-later [QSA]
+
+ #manager videos
+ RewriteRule ^orphanFiles$ view/orphanFiles.php [NC,L]
+ RewriteRule ^mvideos$ view/managerVideos.php [NC,L]
+ RewriteRule ^videos.json$ objects/videos.json.php [NC,L]
+ RewriteRule ^videosAndroid.json$ objects/videosAndroid.json.php [NC,L]
+ RewriteRule ^videoAndroid.json$ objects/videoAndroid.json.php [NC,L]
+ RewriteRule ^deleteVideo$ objects/videoDelete.json.php [NC,L]
+ RewriteRule ^addNewVideo$ objects/videoAddNew.json.php [NC,L]
+ RewriteRule ^refreshVideo$ objects/videoRefresh.json.php [NC,L]
+ RewriteRule ^setStatusVideo$ objects/videoStatus.json.php [NC,L]
+ RewriteRule ^setCategoryVideo$ objects/videoCategory.json.php [NC,L]
+ RewriteRule ^rotateVideo$ objects/videoRotate.json.php [NC,L]
+
+
+ # Subscribes
+ RewriteRule ^subscribes$ view/managerSubscribes.php [NC,L]
+ RewriteRule ^subscribes.json$ objects/subscribes.json.php [NC,L]
+ RewriteRule ^subscribe.json$ objects/subscribe.json.php [NC,L]
+ RewriteRule ^notifySubscribers.json$ objects/notifySubscribers.json.php [NC,L]
+
+
+ RewriteRule ^aVideoQueueEncoder.json$ objects/aVideoQueueEncoder.json.php [NC,L]
+ RewriteRule ^aVideoEncoder.json$ objects/aVideoEncoder.json.php [NC,L]
+ RewriteRule ^aVideoEncoderChunk.json$ objects/aVideoEncoderChunk.json.php [NC,L]
+
+ #comment
+ RewriteRule ^comments$ view/managerComments.php [NC,L]
+ RewriteRule ^saveComment$ objects/commentAddNew.json.php [NC,L]
+ RewriteRule ^comments.json/([0-9]+)$ objects/comments.json.php?video_id=$1 [NC,L]
+
+ RewriteRule ^login$ objects/login.json.php [NC,L]
+ RewriteRule ^logoff$ objects/logoff.php [NC,L]
+
+ RewriteRule ^like$ objects/like.json.php?like=1 [QSA]
+ RewriteRule ^dislike$ objects/like.json.php?like=-1 [QSA]
+
+
+ #manager configuration
+
+ RewriteRule ^update/?$ view/update.php [NC,L]
+ RewriteRule ^siteConfigurations$ view/configurations.php [NC,L]
+ RewriteRule ^updateConfig$ objects/configurationUpdate.json.php [NC,L]
+
+ RewriteRule ^charts$ view/charts.php [NC,L]
+
+ RewriteRule ^help$ view/help.php [NC,L]
+
+ # YouTube Sync
+ RewriteRule ^youtubeUpload$ objects/youtubeUpload.json.php [NC,L]
+
+ RewriteRule ^googleAdView$ view/googleAdView.php [NC,L]
+
+ RewriteRule ^notifications.json$ objects/notifications.json.php [NC,L]
+
+ RewriteRule ^sitemap.xml$ view/sitemap.xml.php [NC,L]
+ RewriteRule ^robots.txt$ view/robots.txt.php [NC,L]
+ RewriteRule ^manifest.json$ view/manifest.json.php [NC,L]
+
+ RewriteRule ^videos/(.*)/index.m3u8$ view/hls.php?videoDirectory=$1 [NC,L,QSA]
+ RewriteRule ^videos/(.*)/index.m3u8.mp4$ view/hls.php?playHLSasMP4=1&videoDirectory=$1 [NC,L,QSA]
+
+ RewriteRule ^vast.xml/?([0-9]+)?$ plugin/AD_Server/VAST.php?campaign_has_videos_id=$1 [NC,L]
+
+
+
+ RewriteRule ^videos/([_A-Za-z0-9.-]+/)?([^!#$&'()*+,\/:;=?@[\]]+(\.(mp4|webm|m3u8|mp3|ogg)))$ view/xsendfile.php?file=$2 [QSA]
+ RewriteRule ^videos/cache/download/([_A-Za-z0-9.-]+/)?([^!#$&'()*+,\/:;=?@[\]]+(\.(mp4|webm|m3u8|mp3|ogg)))$ view/xsendfile.php?file=$2&cacheDownload=1 [QSA]
+
+
+ # if image do not exists
+ RewriteCond %{REQUEST_URI} \.(jpg|jpeg|gif|png|ico)$ [NC]
+ RewriteCond %{REQUEST_FILENAME} !-f
+ RewriteCond %{REQUEST_FILENAME} !-d
+ RewriteRule (.*)$ img/image404.php?image=$1 [NC,L]
+
+ RewriteCond %{REQUEST_FILENAME} !-f
+ RewriteCond %{REQUEST_FILENAME} !-d
+ RewriteCond %{REQUEST_FILENAME} !-l
+ RewriteRule .*$ view/error.php [NC,L]
+
+
+
+ # Compress HTML, CSS, JavaScript, Text, XML and fonts
+ AddOutputFilterByType DEFLATE application/javascript
+ AddOutputFilterByType DEFLATE application/rss+xml
+ AddOutputFilterByType DEFLATE application/vnd.ms-fontobject
+ AddOutputFilterByType DEFLATE application/x-font
+ AddOutputFilterByType DEFLATE application/x-font-opentype
+ AddOutputFilterByType DEFLATE application/x-font-otf
+ AddOutputFilterByType DEFLATE application/x-font-truetype
+ AddOutputFilterByType DEFLATE application/x-font-ttf
+ AddOutputFilterByType DEFLATE application/x-javascript
+ AddOutputFilterByType DEFLATE application/xhtml+xml
+ AddOutputFilterByType DEFLATE application/xml
+ AddOutputFilterByType DEFLATE font/opentype
+ AddOutputFilterByType DEFLATE font/otf
+ AddOutputFilterByType DEFLATE font/ttf
+ AddOutputFilterByType DEFLATE image/svg+xml
+ AddOutputFilterByType DEFLATE image/x-icon
+ AddOutputFilterByType DEFLATE text/css
+ AddOutputFilterByType DEFLATE text/html
+ AddOutputFilterByType DEFLATE text/javascript
+ AddOutputFilterByType DEFLATE text/plain
+ AddOutputFilterByType DEFLATE text/xml
+
+
+AddType text/vtt .vtt
+#php_value post_max_size 4G
+#php_value upload_max_filesize 4G
diff --git a/admin/health_check.php b/admin/health_check.php
index 5447b1ce18ea..6280d9836271 100644
--- a/admin/health_check.php
+++ b/admin/health_check.php
@@ -1,16 +1,14 @@
[], 'PHP' => [], 'Apache' => []];
$version = phpversion();
$phpMinVersion = '7.3.0';
@@ -69,7 +66,7 @@ function _isAPPInstalled($appName){
$XSendFile = url_get_contents($XSendFileURL);
$XSendFileOriginal = file_get_contents($XSendFilePath);
//var_dump($XSendFileURL, $XSendFilePath, $XSendFile, $XSendFileOriginal);exit;
-if($XSendFile===$XSendFileOriginal){
+if ($XSendFile === $XSendFileOriginal) {
$messages['Apache'][] = "XSendFIle is enabled";
} else {
$messages['Apache'][] = ["XSendFIle is not enabled", 'https://github.com/WWBN/AVideo/wiki/Install-Apache-XSendFIle'];
@@ -101,6 +98,20 @@ function _isAPPInstalled($appName){
$messages['Apache'][] = [$value[0], 'We could not check your installed modules. We recommend you to use apache as a module NOT as a FPM'];
}
}
+/*
+if(_isSocketPresentOnCrontab()){
+ $messages['Server'][] = "Socket is installed on your crontab";
+}else{
+ $messages['Server'][] = ["Socket is NOT installed on your crontab, open your terminal and type 'crontab -e', than add the code: ", "@reboot sleep 60;nohup php {$global['systemRootPath']}plugin/YPTSocket/server.php &"];
+}
+
+if(_isSchedulerPresentOnCrontab()){
+ $messages['Server'][] = "Scheduler plugin is installed on your crontab";
+}else{
+ $messages['Server'][] = ["Scheduler plugin is NOT installed on your crontab, open your terminal and type 'crontab -e', than add the code: ", "* * * * * php {$global['systemRootPath']}plugin/Scheduler/run.php"];
+}
+ *
+ */
foreach ($linuxApps as $value) {
$response = _isAPPInstalled($value[0]);
@@ -171,7 +182,7 @@ function _isAPPInstalled($appName){
- ' . PHP_OS . ''; ?>
+' . PHP_OS . ''; ?>
@@ -184,48 +195,48 @@ function _isAPPInstalled($appName){
-
+
+ } else {
+ ?>
+ }
+ }
+ ?>
-
+
-
';
- }
- if ($count % 3 === 0) {
- echo '
';
- }
- }
- ?>
+
';
+ }
+ if ($count % 3 === 0) {
+ echo '
';
+ }
+ }
+ ?>
@@ -238,40 +249,40 @@ function _isAPPInstalled($appName){
-
+
+ } else {
+ ?>
+ }
+ }
+ ?>
-
+
-
+
@@ -284,40 +295,40 @@ function _isAPPInstalled($appName){
-
+
+ } else {
+ ?>
+ }
+ }
+ ?>
-
+
-
+
diff --git a/feed/mrss.php b/feed/mrss.php
index 3073e9bdc05a..4fa5efb0d885 100644
--- a/feed/mrss.php
+++ b/feed/mrss.php
@@ -51,7 +51,7 @@
-
+
" bitrate="128"
type="" expression="full"
duration="">
diff --git a/install/checkMaxOpenFiles.php b/install/checkMaxOpenFiles.php
new file mode 100644
index 000000000000..187d38d1a98a
--- /dev/null
+++ b/install/checkMaxOpenFiles.php
@@ -0,0 +1,7 @@
+ {$file}");
+
+echo PHP_EOL."Dump file created at {$file}".PHP_EOL;
diff --git a/install/mysqlRestore.php b/install/mysqlRestore.php
new file mode 100644
index 000000000000..6d46741a3a05
--- /dev/null
+++ b/install/mysqlRestore.php
@@ -0,0 +1,67 @@
+query($createSQL);
+$global['mysqli']->select_db($mysqlDatabase);
+
+if (php_sapi_name() !== 'cli') {
+ return die('Command Line only');
+}
+
+ob_end_flush();
+
+$globPattern = "{$global['systemRootPath']}videos/mysqldump-*.sql";
+echo "Searching [{$globPattern}]" . PHP_EOL;
+$glob = glob($globPattern);
+foreach ($glob as $key => $file) {
+ echo "($key) {$file}" . PHP_EOL;
+}
+
+echo "Type the number of what file you want to restore or just press enter to get the latest" . PHP_EOL;
+$option = trim(readline(""));
+
+if ($option === '') {
+ $filename = end($glob);
+} else {
+ $option = intval($option);
+ $filename = $glob[$option];
+}
+
+echo 'We will make a backup first ...' . PHP_EOL;
+
+$file = "{$global['systemRootPath']}videos/" . 'mysqlBackupBeforeRestore-' . date('YmdHis') . '.sql';
+passthru("mysqldump --opt -u '{$mysqlUser}' -p'{$mysqlPass}' -h {$mysqlHost} {$mysqlDatabase} > {$file}");
+echo PHP_EOL . "Backup file created at {$file}" . PHP_EOL;
+
+executeFile($filename);
+
+function executeFile($filename) {
+ global $global;
+ $templine = '';
+ // Read in entire file
+ $lines = file($filename);
+ // Loop through each line
+ foreach ($lines as $line) {
+ // Skip it if it's a comment
+ if (substr($line, 0, 2) == '--' || $line == '')
+ continue;
+
+ // Add this line to the current segment
+ $templine .= $line;
+ // If it has a semicolon at the end, it's the end of the query
+ if (substr(trim($line), -1, 1) == ';') {
+ // Perform the query
+ if (!$global['mysqli']->query($templine)) {
+ echo ('sqlDAL::executeFile ' . $filename . ' Error performing query \'' . $templine . '\': ' . $global['mysqli']->error . ' ');
+ }
+ // Reset temp variable to empty
+ $templine = '';
+ }
+ }
+}
diff --git a/install/stopDDOSAtackIps.php b/install/stopDDOSAtackIps.php
index 4fde8482b712..5fdffc1d7b91 100644
--- a/install/stopDDOSAtackIps.php
+++ b/install/stopDDOSAtackIps.php
@@ -1,5 +1,11 @@
&1', $output, $return_var);
echo json_encode($output) . PHP_EOL;
- echo '--------------'. PHP_EOL;
+ echo '--------------' . PHP_EOL;
if ($output[0] === 'Rule inserted') {
$newRules[] = $ip;
}
@@ -73,13 +118,41 @@ function tailShell($filepath, $lines = 1) {
$totalNew = count($newRules);
//echo PHP_EOL . date('Y-m-d H:i:s').' Found ' . $total . PHP_EOL;
//echo PHP_EOL . $totalNew . ' New IPs added: ' . implode(', ', $newRules) . PHP_EOL;
+
+ if ($totalNew) {
+ $timeout = $defaultTimeout/4;
+ $linesCount = intval($defaultLines/4);
+ echo "*** {$totalNew} new rules inserted" . PHP_EOL;
+ }
- if($totalNew){
- //exec('/etc/init.d/apache2 restart');
- exec('/etc/init.d/mysql stop');
- }else{
+ if ($totalNew && !$mySQLIsStopped) {
+ $load = percentloadavg();
+ echo '*** sys_getloadavg: '.$load[0] . PHP_EOL;
+ if ($load[0] > 0.80) {
+ //exec('/etc/init.d/apache2 restart');
+ echo '*** STOP MySQL' . PHP_EOL;
+ $mySQLIsStopped = 1;
+ exec('/etc/init.d/mysql stop');
+ }
+ } else if (empty($totalNew) && $mySQLIsStopped) {
+ echo '*** Start MySQL 1' . PHP_EOL;
+ $mySQLIsStopped = 0;
exec('/etc/init.d/mysql start');
+ $timeout = $defaultTimeout;
+ $linesCount = $defaultLines;
+ }else if($mySQLIsStopped){
+ $load = percentloadavg();
+ echo '*** sys_getloadavg: '.$load[0] . PHP_EOL;
+ if ($load[0] < 0.50) {
+ echo '*** Start MySQL 2' . PHP_EOL;
+ $mySQLIsStopped = 0;
+ exec('/etc/init.d/mysql start');
+ $timeout = $defaultTimeout;
+ $linesCount = $defaultLines;
+ }
}
-
- sleep(2);
+ if ($totalNew) {
+ echo "*******" . PHP_EOL . PHP_EOL;
+ }
+ sleep($timeout);
}
\ No newline at end of file
diff --git a/objects/ICS.php b/objects/ICS.php
new file mode 100644
index 000000000000..bf01f63d31d6
--- /dev/null
+++ b/objects/ICS.php
@@ -0,0 +1,170 @@
+
+ *
+ * ICS.php
+ * =============================================================================
+ * Use this class to create an .ics file.
+ *
+ *
+ * Usage
+ * -----------------------------------------------------------------------------
+ * Basic usage - generate ics file contents (see below for available properties):
+ * $ics = new ICS($props);
+ * $ics_file_contents = $ics->to_string();
+ *
+ * Setting properties after instantiation
+ * $ics = new ICS();
+ * $ics->set('summary', 'My awesome event');
+ *
+ * You can also set multiple properties at the same time by using an array:
+ * $ics->set(array(
+ * 'dtstart' => 'now + 30 minutes',
+ * 'dtend' => 'now + 1 hour'
+ * ));
+ *
+ * Available properties
+ * -----------------------------------------------------------------------------
+ * description
+ * String description of the event.
+ * dtend
+ * A date/time stamp designating the end of the event. You can use either a
+ * DateTime object or a PHP datetime format string (e.g. "now + 1 hour").
+ * dtstart
+ * A date/time stamp designating the start of the event. You can use either a
+ * DateTime object or a PHP datetime format string (e.g. "now + 1 hour").
+ * location
+ * String address or description of the location of the event.
+ * summary
+ * String short summary of the event - usually used as the title.
+ * url
+ * A url to attach to the the event. Make sure to add the protocol (http://
+ * or https://).
+ */
+
+class ICS {
+ const DT_FORMAT = 'Ymd\THis\Z';
+
+ protected $properties = array();
+ private $available_properties = array(
+ 'description',
+ 'dtend',
+ 'dtstart',
+ 'location',
+ 'summary',
+ 'url',
+ 'valarm'
+ );
+
+ public function __construct($props) {
+ $this->set($props);
+ }
+
+ public function set($key, $val = false) {
+ if (is_array($key)) {
+ foreach ($key as $k => $v) {
+ $this->set($k, $v);
+ }
+ } else {
+ if (in_array($key, $this->available_properties)) {
+ $this->properties[$key] = $this->sanitize_val($val, $key);
+ }
+ }
+ }
+
+ public function to_string() {
+ $rows = $this->build_props();
+ return implode("\r\n", $rows);
+ }
+
+ private function build_props() {
+ // Build ICS properties - add header
+ $ics_props = array(
+ 'BEGIN:VCALENDAR',
+ 'VERSION:2.0',
+ 'PRODID:-//hacksw/handcal//NONSGML v1.0//EN',
+ 'CALSCALE:GREGORIAN',
+ 'BEGIN:VEVENT'
+ );
+
+ // Build ICS properties - add header
+ $props = array();
+ foreach($this->properties as $k => $v) {
+ $props[strtoupper($k . ($k === 'url' ? ';VALUE=URI' : ''))] = $v;
+ }
+
+ // Set some default values
+ $props['DTSTAMP'] = $this->format_timestamp('now');
+ $props['UID'] = uniqid();
+
+ // Append properties
+ foreach ($props as $k => $v) {
+ if($k=='VALARM'){
+ $ics_props[] = "BEGIN:VALARM";
+ $ics_props[] = "$k:$v";
+ if(!empty($props['DESCRIPTION'])){
+ $ics_props[] = "ACTION:DISPLAY";
+ }else{
+ $ics_props[] = "ACTION:AUDIO";
+ }
+ $ics_props[] = "END:VALARM";
+ }else{
+ $ics_props[] = "$k:$v";
+ }
+ }
+
+ // Build ICS properties - add footer
+ $ics_props[] = 'END:VEVENT';
+ $ics_props[] = 'END:VCALENDAR';
+
+ return $ics_props;
+ }
+
+ private function sanitize_val($val, $key = false) {
+ switch($key) {
+ case 'dtend':
+ case 'dtstamp':
+ case 'dtstart':
+ $val = $this->format_timestamp($val);
+ break;
+ default:
+ $val = $this->escape_string($val);
+ }
+
+ return $val;
+ }
+
+ private function format_timestamp($timestamp) {
+ $dt = new DateTime($timestamp);
+ $dt->setTimezone(new DateTimeZone('UTC'));
+ return $dt->format(self::DT_FORMAT);
+ }
+
+ private function escape_string($str) {
+ return preg_replace('/([\,;])/','\\\$1', $str);
+ }
+}
\ No newline at end of file
diff --git a/objects/Object.php b/objects/Object.php
index 01e2e3201243..f9d9f7df6804 100644
--- a/objects/Object.php
+++ b/objects/Object.php
@@ -328,7 +328,8 @@ public function save()
}
$sql .= " VALUES (" . implode(", ", $fields) . ")";
}
- //if(static::getTableName() == 'subscriptions') echo $sql;
+ //if(static::getTableName() == 'Scheduler_commands'){ echo $sql;var_dump($this->parameters);exit;}
+ //echo $sql;var_dump($this->parameters);exit;
$insert_row = sqlDAL::writeSql($sql);
if ($insert_row) {
diff --git a/objects/functionGetHamburgerButton.php b/objects/functionGetHamburgerButton.php
new file mode 100644
index 000000000000..3af054392521
--- /dev/null
+++ b/objects/functionGetHamburgerButton.php
@@ -0,0 +1,162 @@
+
+>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/objects/functions.php b/objects/functions.php
index 33ef2104056b..8e641d3618d7 100644
--- a/objects/functions.php
+++ b/objects/functions.php
@@ -166,7 +166,7 @@ function secondsToHumanTiming($time, $precision = 0) {
];
/**
- * For detection propouse only
+ * For detection purposes only
*/
__('year');
__('month');
@@ -545,8 +545,9 @@ function partition(array $list, $totalItens) {
return $partition;
}
-function sendSiteEmail($to, $subject, $message) {
+function sendSiteEmail($to, $subject, $message, $fromEmail = '', $fromName = '') {
global $advancedCustom;
+ $resp = false;
if (empty($to)) {
return false;
}
@@ -564,13 +565,18 @@ function sendSiteEmail($to, $subject, $message) {
_error_log("sendSiteEmail [" . count($to) . "] {$subject}");
global $config, $global;
//require_once $global['systemRootPath'] . 'objects/include_phpmailer.php';
- $contactEmail = $config->getContactEmail();
+ if (empty($fromEmail)) {
+ $fromEmail = $config->getContactEmail();
+ }
+ if (empty($fromName)) {
+ $fromName = $config->getWebSiteTitle();
+ }
$webSiteTitle = $config->getWebSiteTitle();
try {
if (!is_array($to)) {
$mail = new \PHPMailer\PHPMailer\PHPMailer();
setSiteSendMessage($mail);
- $mail->setFrom($contactEmail, $webSiteTitle);
+ $mail->setFrom($fromEmail, $fromName);
$mail->Subject = $subject . " - " . $webSiteTitle;
$mail->msgHTML($message);
@@ -593,7 +599,7 @@ function sendSiteEmail($to, $subject, $message) {
foreach ($pieces as $piece) {
$mail = new \PHPMailer\PHPMailer\PHPMailer();
setSiteSendMessage($mail);
- $mail->setFrom($contactEmail, $webSiteTitle);
+ $mail->setFrom($fromEmail, $fromName);
$mail->Subject = $subject . " - " . $webSiteTitle;
$mail->msgHTML($message);
$count = 0;
@@ -618,6 +624,7 @@ function sendSiteEmail($to, $subject, $message) {
} catch (Exception $e) {
_error_log($e->getMessage()); //Boring error messages from anything else!
}
+ return $resp;
}
function sendSiteEmailAsync($to, $subject, $message) {
@@ -3929,7 +3936,13 @@ function _mysql_connect() {
if (!_mysql_is_open()) {
//_error_log('MySQL Connect '. json_encode(debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS)));
$mysql_connect_was_closed = 0;
- $global['mysqli'] = new mysqli($mysqlHost, $mysqlUser, $mysqlPass, $mysqlDatabase, @$mysqlPort);
+ $global['mysqli'] = new mysqli($mysqlHost, $mysqlUser, $mysqlPass, '', @$mysqlPort);
+ if (isCommandLineInterface() && !empty($global['createDatabase'])) {
+ $createSQL = "CREATE DATABASE IF NOT EXISTS {$mysqlDatabase};";
+ _error_log($createSQL);
+ $global['mysqli']->query($createSQL);
+ }
+ $global['mysqli']->select_db($mysqlDatabase);
if (!empty($global['mysqli_charset'])) {
$global['mysqli']->set_charset($global['mysqli_charset']);
}
@@ -5726,7 +5739,7 @@ function forbiddenPage($message = '', $logMessage = false, $unlockPassword = '',
$headers = headers_list(); // get list of headers
foreach ($headers as $header) { // iterate over that list of headers
- if (stripos($header, 'Content-Type') !== FALSE) { // if the current header hasthe String "Content-Type" in it
+ if (stripos($header, 'Content-Type:') !== FALSE) { // if the current header hasthe String "Content-Type" in it
$headerParts = explode(':', $header); // split the string, getting an array
$headerValue = trim($headerParts[1]); // take second part as value
$contentType = $headerValue;
@@ -6972,6 +6985,7 @@ function getStatsNotifications($force_recreate = false, $listItIfIsAdminOrOwner
}
}
$cache = ObjectYPT::setCache($cacheName, $json);
+ Live::unfinishAllFromStats();
//_error_log('Live::createStatsCache ' . json_encode($cache));
} else {
//_error_log('getStatsNotifications: 2 cached result');
@@ -8173,3 +8187,105 @@ function pluginsRequired($arrayPluginName, $featureName = '') {
}
return $obj;
}
+
+function _strtotime($datetime) {
+ if (is_int($datetime)) {
+ return $datetime;
+ }
+ return strtotime($datetime);
+}
+
+function _isSocketPresentOnCrontab() {
+ foreach (getValidCrontabLines() as $line) {
+ if (!empty($line) && preg_match('/plugin\/YPTSocket\/server.php/', $line)) {
+ return true;
+ }
+ }
+ return false;
+}
+
+function _isSchedulerPresentOnCrontab() {
+ foreach (getValidCrontabLines() as $line) {
+ if (!empty($line) && preg_match('/plugin\/Scheduler\/run.php/', $line)) {
+ return true;
+ }
+ }
+ return false;
+}
+
+function getValidCrontabLines() {
+ global $_validCrontabLines;
+ if (empty($validCrontabLines)) {
+ $crontab = shell_exec('crontab -l');
+ $crontabLines = preg_split("/\r\n|\n|\r/", $crontab);
+ $_validCrontabLines = array();
+
+ foreach ($crontabLines as $line) {
+ $line = trim($line);
+ if (!empty($line) && !preg_match('/^#/', $line)) {
+ $_validCrontabLines[] = $line;
+ }
+ }
+ }
+ return $_validCrontabLines;
+}
+
+/**
+ *
+ * @param type $strOrArray
+ * @return type return an array with the valid emails.
+ */
+function is_email($strOrArray) {
+ if (empty($strOrArray)) {
+ return array();
+ }
+ if (!is_array($strOrArray)) {
+ $strOrArray = array($strOrArray);
+ }
+ $valid_emails = array();
+ foreach ($strOrArray as $email) {
+ if (is_numeric($email)) {
+ $email = User::getEmailDb($email);
+ }
+ if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
+ $valid_emails[] = $email;
+ }
+ }
+ return $valid_emails;
+}
+
+/**
+ * https://codepen.io/ainalem/pen/LJYRxz
+ * @global type $global
+ * @param type $id
+ * @param type $type 1 to 8 [1=x, 2=<-, 3=close, 4=x, 5=<-, 6=x, 7=x, 8=x]
+ * @param type $parameters
+ * @return type
+ */
+function getHamburgerButton($id = '', $type = 0, $parameters = 'class="btn btn-default hamburger"', $startActive = false, $invert = false) {
+ global $global;
+ if ($type === 'x') {
+ $XOptions = array(1, 4, 6, 7, 8);
+ $type = $XOptions[rand(0, 4)];
+ }else if($type === '<-'){
+ $XOptions = array(2, 5);
+ $type = $XOptions[rand(0, 1)];
+ }
+ $type = intval($type);
+ if (empty($type) || ($type < 1 && $type > 8)) {
+ $type = rand(1, 8);
+ }
+ if (empty($id)) {
+ $id = uniqid();
+ }
+ $filePath = $global['systemRootPath'] . 'objects/functionGetHamburgerButton.php';
+ return getIncludeFileContent($filePath, array('type' => $type, 'id' => $id, 'parameters' => $parameters, 'startActive' => $startActive, 'invert' => $invert));
+}
+
+function getUserOnlineLabel($users_id, $class='', $style=''){
+ if(AVideoPlugin::isEnabledByName('YPTSocket')){
+ return YPTSocket::getUserOnlineLabel($users_id, $class, $style);
+ }else{
+ return '';
+ }
+}
\ No newline at end of file
diff --git a/objects/mysql_dal.php b/objects/mysql_dal.php
index e4b9e841d8a9..0d72675fa7cd 100644
--- a/objects/mysql_dal.php
+++ b/objects/mysql_dal.php
@@ -100,6 +100,7 @@ public static function writeSql($preparedStatement, $formats = "", $values = [])
" formats = ". json_encode($formats));
return false;
}
+ //var_dump($preparedStatement, $formats, $values);exit;
if (!sqlDAL::eval_mysql_bind($stmt, $formats, $values)) {
log_error("[sqlDAL::writeSql] eval_mysql_bind failed: values and params in stmt don't match ({$preparedStatement}) with formats ({$formats})");
return false;
diff --git a/objects/user.php b/objects/user.php
index e5670ecb971d..834a53753c1e 100644
--- a/objects/user.php
+++ b/objects/user.php
@@ -267,6 +267,16 @@ public static function getEmail_() {
return false;
}
}
+
+ public static function _getEmail() {
+ return self::getEmail_();
+ }
+
+ static function getEmailDb($users_id) {
+ $user = self::getUserDB($users_id);
+ return @$user['email'];
+ }
+
public function getBdId() {
return $this->id;
@@ -593,11 +603,7 @@ public static function getBackground($id = "") {
}
public static function getMail() {
- if (self::isLogged()) {
- return $_SESSION['user']['email'];
- } else {
- return false;
- }
+ self::getEmail_();
}
public function save($updateUserGroups = false) {
diff --git a/plugin/CustomizeAdvanced/CustomizeAdvanced.php b/plugin/CustomizeAdvanced/CustomizeAdvanced.php
index 62b0f43032c6..4491459067aa 100644
--- a/plugin/CustomizeAdvanced/CustomizeAdvanced.php
+++ b/plugin/CustomizeAdvanced/CustomizeAdvanced.php
@@ -1,520 +1,521 @@
- Help ";
- return $txt . $help;
- }
-
- public function getName() {
- return "CustomizeAdvanced";
- }
-
- public function getUUID() {
- return "55a4fa56-8a30-48d4-a0fb-8aa6b3f69033";
- }
-
- public function getPluginVersion() {
- return "1.0";
- }
-
- public function getEmptyDataObject() {
- global $global;
- $obj = new stdClass();
- $obj->logoMenuBarURL = "";
- $obj->encoderNetwork = "https://network.wwbn.net/";
- $obj->useEncoderNetworkRecomendation = false;
- $obj->doNotShowEncoderNetwork = true;
- $obj->doNotShowUploadButton = false;
- $obj->uploadButtonDropdownIcon = "fas fa-video";
- $obj->uploadButtonDropdownText = "";
- $obj->encoderNetworkLabel = "";
- $obj->doNotShowUploadMP4Button = true;
- $obj->disablePDFUpload = false;
- $obj->disableImageUpload = false;
- $obj->disableZipUpload = true;
- $obj->disableMP4Upload = false;
- $obj->disableMP3Upload = false;
- $obj->uploadMP4ButtonLabel = "";
- $obj->doNotShowImportMP4Button = true;
- $obj->importMP4ButtonLabel = "";
- $obj->doNotShowEncoderButton = false;
- $obj->encoderButtonLabel = "";
- $obj->doNotShowEmbedButton = false;
- $obj->embedBackgroundColor = "white";
- $obj->embedButtonLabel = "";
- $obj->embedCodeTemplate = '
';
- $obj->embedCodeTemplateObject = '';
- $obj->htmlCodeTemplate = ' {title} ';
- $obj->BBCodeTemplate = '[url={permaLink}][img]{imgSRC}[/img]{title}[/url]';
-
- $o = new stdClass();
- $o->type = array(-1 => __("Basic Controls"), 0 => __("No Controls"), 1 => __("All controls"));
- $o->value = 1;
- $obj->embedControls = $o;
- $obj->embedAutoplay = false;
- $obj->embedLoop = false;
- $obj->embedStartMuted = false;
- $obj->embedShowinfo = true;
-
- $obj->doNotShowEncoderHLS = false;
- $obj->doNotShowEncoderResolutionLow = false;
- $obj->doNotShowEncoderResolutionSD = false;
- $obj->doNotShowEncoderResolutionHD = false;
- $obj->openEncoderInIFrame = false;
- $obj->showOnlyEncoderAutomaticResolutions = true;
- $obj->doNotShowEncoderAutomaticHLS = false;
- $obj->doNotShowEncoderAutomaticMP4 = false;
- $obj->doNotShowEncoderAutomaticWebm = false;
- $obj->doNotShowEncoderAutomaticAudio = false;
- $obj->saveOriginalVideoResolution = false;
- self::addDataObjectHelper('saveOriginalVideoResolution', 'Do not save original video', 'This option will make your encoder at the end trancode the video into the original format resolution');
- $obj->doNotShowExtractAudio = false;
- $obj->doNotShowCreateVideoSpectrum = false;
- $obj->doNotShowLeftMenuAudioAndVideoButtons = false;
- $obj->doNotShowWebsiteOnContactForm = false;
- $obj->doNotUseXsendFile = false;
- $obj->makeVideosInactiveAfterEncode = false;
- $obj->makeVideosUnlistedAfterEncode = false;
- $obj->usePermalinks = false;
- $obj->useVideoIDOnSEOLinks = true;
- $obj->disableAnimatedGif = false;
- $obj->removeBrowserChannelLinkFromMenu = false;
- $obj->EnableMinifyJS = false;
- $obj->disableShareAndPlaylist = false;
- $obj->disableShareOnly = false;
- $obj->disableEmailSharing = false;
- $obj->splitBulkEmailSend = 50;
- $obj->disableComments = false;
- $obj->commentsMaxLength = 200;
- $obj->commentsNoIndex = false;
- $obj->disableYoutubePlayerIntegration = false;
- $obj->utf8Encode = false;
- $obj->utf8Decode = false;
- $o = new stdClass();
- $o->type = "textarea";
- $o->value = "";
- $obj->menuBarHTMLCode = $o;
- $o->type = "textarea";
- $o->value = "";
- $obj->underMenuBarHTMLCode = $o;
- $o->type = "textarea";
- $o->value = "";
- $obj->footerHTMLCode = $o;
- $obj->signInOnRight = true;
- $obj->signInOnLeft = true;
- $obj->forceCategory = false;
- $obj->showCategoryTopImages = true;
- $obj->autoPlayAjax = false;
-
- $plugins = Plugin::getAllEnabled();
- //import external plugins configuration options
- foreach ($plugins as $value) {
- $p = AVideoPlugin::loadPlugin($value['dirName']);
- if (is_object($p)) {
- $foreginObjects = $p->getCustomizeAdvancedOptions();
- if ($foreginObjects) {
- foreach ($foreginObjects as $optionName => $defaultValue)
- $obj->{$optionName} = $defaultValue;
- }
- }
- }
-
- $obj->disableInstallPWAButton = false;
- $obj->disablePlayLink = false;
- $obj->disableHelpLeftMenu = false;
- $obj->disableAboutLeftMenu = false;
- $obj->disableContactLeftMenu = false;
- $obj->disableAnimations = false;
- $obj->disableNavbar = false;
- $obj->disableNavBarInsideIframe = true;
- $obj->autoHideNavbar = true;
- $obj->autoHideNavbarInSeconds = 0;
- $obj->videosCDN = "";
- $obj->useFFMPEGToGenerateThumbs = false;
- $obj->thumbsWidthPortrait = 170;
- $obj->thumbsHeightPortrait = 250;
- $obj->thumbsWidthLandscape = 640;
- $obj->thumbsHeightLandscape = 360;
- $obj->usePreloadLowResolutionImages = false;
- $obj->showImageDownloadOption = false;
- $obj->doNotDisplayViews = false;
- $obj->doNotDisplayLikes = false;
- $obj->doNotDisplayCategoryLeftMenu = false;
- $obj->doNotDisplayCategory = false;
- $obj->doNotDisplayGroupsTags = false;
- $obj->doNotDisplayPluginsTags = false;
- $obj->showNotRatedLabel = false;
- $obj->showShareMenuOpenByDefault = false;
-
- foreach ($global['social_medias'] as $key => $value) {
- eval("\$obj->showShareButton_{$key} = true;");
- }
-
- $obj->askRRatingConfirmationBeforePlay_G = false;
- $obj->askRRatingConfirmationBeforePlay_PG = false;
- $obj->askRRatingConfirmationBeforePlay_PG13 = false;
- $obj->askRRatingConfirmationBeforePlay_R = false;
- $obj->askRRatingConfirmationBeforePlay_NC17 = true;
- $obj->askRRatingConfirmationBeforePlay_MA = true;
- $obj->filterRRating = false;
-
-
- $obj->doNotShowLeftHomeButton = false;
- $obj->doNotShowLeftTrendingButton = false;
-
- $obj->CategoryLabel = "Categories";
- $obj->ShowAllVideosOnCategory = false;
- $obj->hideCategoryVideosCount = false;
- $obj->hideEditAdvancedFromVideosManager = false;
-
- //ver 7.1
- $obj->paidOnlyUsersTellWhatVideoIs = false;
- $obj->paidOnlyShowLabels = false;
- $obj->paidOnlyLabel = "Premium";
- $obj->paidOnlyFreeLabel = "Free";
- $obj->removeSubscribeButton = false;
- $obj->removeThumbsUpAndDown = false;
-
- $o = new stdClass();
- $o->type = "textarea";
- $o->value = "";
- $obj->videoNotFoundText = $o;
- $obj->siteMapRowsLimit = 100;
- $obj->siteMapUTF8Fix = false;
- $obj->showPrivateVideosOnSitemap = false;
- $obj->enableOldPassHashCheck = true;
- $obj->disableHTMLDescription = false;
- $obj->disableVideoSwap = false;
- $obj->makeSwapVideosOnlyForAdmin = false;
- $obj->disableCopyEmbed = false;
- $obj->disableDownloadVideosList = false;
- $obj->videosManegerRowCount = "[10, 25, 50, -1]"; //An Array of Integer which will be shown in the dropdown box to choose the row count. Default value is [10, 25, 50, -1]. -1 means all. When passing an Integer value the dropdown box will disapear.
- $obj->videosListRowCount = "[10, 20, 30, 40, 50]"; //An Array of Integer which will be shown in the dropdown box to choose the row count. Default value is [10, 25, 50, -1]. -1 means all. When passing an Integer value the dropdown box will disapear.
- $obj->videosManegerBulkActionButtons = true;
-
- $parse = parse_url($global['webSiteRootURL']);
- $domain = str_replace(".", "", $parse['host']);
- $obj->twitter_site = "@{$domain}";
- $obj->twitter_player = true;
- $obj->twitter_summary_large_image = false;
- $obj->footerStyle = "position: fixed;bottom: 0;width: 100%;";
- $obj->disableVideoTags = false;
- $obj->doNotAllowEncoderOverwriteStatus = false;
- $obj->doNotAllowUpdateVideoId = false;
- $obj->makeVideosIDHarderToGuess = false;
- self::addDataObjectHelper('makeVideosIDHarderToGuess', 'Make the videos ID harder to guess', 'This will change the videos_id on the URL to a crypted value. this crypt user your $global[salt] (configuration.php), so make sure you keep it save in case you need to restore your site, otherwise all the shared links will be lost');
-
-
-
- $o = new stdClass();
- $o->type = DateTimeZone::listIdentifiers(DateTimeZone::ALL);
- $o->value = 0;
- $obj->timeZone = $o;
-
-
- $obj->keywords = "AVideo, videos, live, movies";
- $obj->doNotSaveCacheOnFilesystem = false;
-
-
- $o = new stdClass();
- $o->type = "textarea";
- $o->value = "Allow: /plugin/Live/?*
-Allow: /plugin/PlayLists/*.css
-Allow: /plugin/PlayLists/*.js
-Allow: /plugin/TopMenu/*.css
-Allow: /plugin/TopMenu/*.js
-Allow: /plugin/SubtitleSwitcher/*.css
-Allow: /plugin/SubtitleSwitcher/*.js
-Allow: /plugin/Gallery/*.css
-Allow: /plugin/Gallery/*.js
-Allow: /plugin/YouPHPFlix2/*.png
-Allow: /plugin/Live/*.css
-Allow: /plugin/Live/*.js
-Allow: /plugin/*.css
-Allow: /plugin/*.js
-Allow: .js
-Allow: .css
-Disallow: /user
-Disallow: /plugin
-Disallow: /mvideos
-Disallow: /usersGroups
-Disallow: /charts
-Disallow: /upload
-Disallow: /comments
-Disallow: /subscribes
-Disallow: /update
-Disallow: /locale
-Disallow: /objects/*
-Allow: /plugin/Live/?*
-Allow: /plugin/LiveLink/?*
-Allow: /plugin/PlayLists/*.css
-Allow: /plugin/PlayLists/*.js
-Allow: /plugin/TopMenu/*.css
-Allow: /plugin/TopMenu/*.js
-Allow: /plugin/SubtitleSwitcher/*.css
-Allow: /plugin/SubtitleSwitcher/*.js
-Allow: /plugin/Gallery/*.css
-Allow: /plugin/Gallery/*.js
-Allow: /plugin/YouPHPFlix2/*.png
-Allow: /plugin/Live/*.css
-Allow: /plugin/Live/*.js
-Allow: /plugin/*.css
-Allow: /plugin/*.js
-Allow: .js
-Allow: .css";
- $obj->robotsTXT = $o;
- self::addDataObjectHelper('robotsTXT', 'robots.txt file content', 'robots.txt is a plain text file that follows the Robots Exclusion Standard. A robots.txt file consists of one or more rules. Each rule blocks (or allows) access for a given crawler to a specified file path in that website.');
-
-
- return $obj;
- }
-
- public function getHelp() {
- if (User::isAdmin()) {
- return "CustomizeAdvanced (admin) " . $this->getDescription() . "
";
- }
- return "";
- }
-
- public function getModeYouTube($videos_id) {
- global $global, $config;
- $obj = $this->getDataObject();
- $video = Video::getVideo($videos_id, "viewable", true);
- if (!empty($video['rrating']) && empty($_GET['rrating'])) {
- $suffix = strtoupper(str_replace("-", "", $video['rrating']));
- eval("\$show = \$obj->askRRatingConfirmationBeforePlay_$suffix;");
- if (!empty($show)) {
- include "{$global['systemRootPath']}plugin/CustomizeAdvanced/confirmRating.php";
- exit;
- }
- }
- }
-
- public function getEmbed($videos_id) {
- return $this->getModeYouTube($videos_id);
- }
-
- public function getFooterCode() {
- global $global;
-
- $obj = $this->getDataObject();
- $content = '';
- if ($obj->autoHideNavbar && !isEmbed()) {
- $content .= '';
- $content .= '';
- }
- if ($obj->autoHideNavbarInSeconds && !isEmbed()) {
- $content .= '';
- }
- return $content;
- }
-
- public function getHTMLMenuRight() {
- global $global;
- $obj = $this->getDataObject();
- if ($obj->filterRRating) {
- include $global['systemRootPath'] . 'plugin/CustomizeAdvanced/menuRight.php';
- }
- }
-
- public function getHTMLMenuLeft() {
- global $global;
- $obj = $this->getDataObject();
- if ($obj->filterRRating) {
- include $global['systemRootPath'] . 'plugin/CustomizeAdvanced/menuLeft.php';
- }
- }
-
- public static function getVideoWhereClause() {
- $sql = "";
- $obj = AVideoPlugin::getObjectData("CustomizeAdvanced");
- if ($obj->filterRRating && isset($_GET['rrating'])) {
- if ($_GET['rrating'] === "0") {
- $sql .= " AND v.rrating = ''";
- } else if (in_array($_GET['rrating'], Video::$rratingOptions)) {
- $sql .= " AND v.rrating = '{$_GET['rrating']}'";
- }
- }
- return $sql;
- }
-
- public function getVideosManagerListButton() {
- $btn = "";
- if (User::isAdmin()) {
- $btn = ' '. __("Update Disk Usage") .' ';
- $btn .= ' '. __("Remove Thumbs") .' ';
- }
- return $btn;
- }
-
- public function getHeadCode() {
- global $global;
- $obj = $this->getDataObject();
-
- if($obj->makeVideosIDHarderToGuess){
- if(isVideo()){
- if(!empty($global['makeVideosIDHarderToGuessNotDecrypted'])){
- unset($global['makeVideosIDHarderToGuessNotDecrypted']);
- forbiddenPage(__('Invalid ID'));
- }
- }
- }
-
- $baseName = basename($_SERVER['REQUEST_URI']);
-
- $js = "";
- if(empty($obj->autoPlayAjax)){
- $js .= "";
- }else{
- $js .= "";
- }
- if ($baseName === 'mvideos') {
- $js .= "";
- $js .= "";
- }
- return $js;
- }
-
- public function onReceiveFile($videos_id) {
- Video::updateFilesize($videos_id);
- return true;
- }
-
-}
-
-class SocialMedias{
- public $href;
- public $class;
- public $title;
- public $iclass;
- public $img;
- public $onclick;
-
- function __construct($iclass, $img='') {
- $this->iclass = $iclass;
- $this->img = $img;
- }
-
-
- function getHref() {
- return $this->href;
- }
-
- function getClass() {
- return $this->class;
- }
-
- function getTitle() {
- return $this->title;
- }
-
- function getIclass() {
- return $this->iclass;
- }
-
- function getImg() {
- return $this->img;
- }
-
- function getOnclick() {
- return $this->onclick;
- }
-
- function setHref($href): void {
- $this->href = $href;
- }
-
- function setClass($class): void {
- $this->class = $class;
- }
-
- function setTitle($title): void {
- $this->title = $title;
- }
-
- function setIclass($iclass): void {
- $this->iclass = $iclass;
- }
-
- function setImg($img): void {
- $this->img = $img;
- }
-
- function setOnclick($onclick): void {
- $this->onclick = $onclick;
- }
-
-
-}
-
-$global['social_medias'] = array(
- 'Facebook'=>new SocialMedias('fab fa-facebook-square', ''),
- 'Twitter'=>new SocialMedias('fab fa-twitter', ''),
- 'Tumblr'=>new SocialMedias('fab fa-tumblr', ''),
- 'Pinterest'=>new SocialMedias('fab fa-pinterest-p', ''),
- 'Reddit'=>new SocialMedias('fab fa-reddit-alien', ''),
- 'LinkedIn'=>new SocialMedias('fab fa-linkedin-in', ''),
- 'Wordpress'=>new SocialMedias('fab fa-wordpress-simple', ''),
- 'Pinboard'=>new SocialMedias('fas fa-thumbtack', ''),
- 'Gab'=>new SocialMedias('', getURL('view/img/gab.png')),
- 'CloutHub'=>new SocialMedias('', getURL('view/img/cloutHub.png')),
-);
\ No newline at end of file
+ Help ";
+ return $txt . $help;
+ }
+
+ public function getName() {
+ return "CustomizeAdvanced";
+ }
+
+ public function getUUID() {
+ return "55a4fa56-8a30-48d4-a0fb-8aa6b3f69033";
+ }
+
+ public function getPluginVersion() {
+ return "1.0";
+ }
+
+ public function getEmptyDataObject() {
+ global $global;
+ $obj = new stdClass();
+ $obj->logoMenuBarURL = "";
+ $obj->encoderNetwork = "https://network.wwbn.net/";
+ $obj->useEncoderNetworkRecomendation = false;
+ $obj->doNotShowEncoderNetwork = true;
+ $obj->doNotShowUploadButton = false;
+ $obj->uploadButtonDropdownIcon = "fas fa-video";
+ $obj->uploadButtonDropdownText = "";
+ $obj->encoderNetworkLabel = "";
+ $obj->doNotShowUploadMP4Button = true;
+ $obj->disablePDFUpload = false;
+ $obj->disableImageUpload = false;
+ $obj->disableZipUpload = true;
+ $obj->disableMP4Upload = false;
+ $obj->disableMP3Upload = false;
+ $obj->uploadMP4ButtonLabel = "";
+ $obj->doNotShowImportMP4Button = true;
+ $obj->importMP4ButtonLabel = "";
+ $obj->doNotShowEncoderButton = false;
+ $obj->encoderButtonLabel = "";
+ $obj->doNotShowEmbedButton = false;
+ $obj->embedBackgroundColor = "white";
+ $obj->embedButtonLabel = "";
+ $obj->embedCodeTemplate = '
';
+ $obj->embedCodeTemplateObject = '';
+ $obj->htmlCodeTemplate = ' {title} ';
+ $obj->BBCodeTemplate = '[url={permaLink}][img]{imgSRC}[/img]{title}[/url]';
+
+ $o = new stdClass();
+ $o->type = array(-1 => __("Basic Controls"), 0 => __("No Controls"), 1 => __("All controls"));
+ $o->value = 1;
+ $obj->embedControls = $o;
+ $obj->embedAutoplay = false;
+ $obj->embedLoop = false;
+ $obj->embedStartMuted = false;
+ $obj->embedShowinfo = true;
+
+ $obj->doNotShowEncoderHLS = false;
+ $obj->doNotShowEncoderResolutionLow = false;
+ $obj->doNotShowEncoderResolutionSD = false;
+ $obj->doNotShowEncoderResolutionHD = false;
+ $obj->openEncoderInIFrame = false;
+ $obj->showOnlyEncoderAutomaticResolutions = true;
+ $obj->doNotShowEncoderAutomaticHLS = false;
+ $obj->doNotShowEncoderAutomaticMP4 = false;
+ $obj->doNotShowEncoderAutomaticWebm = false;
+ $obj->doNotShowEncoderAutomaticAudio = false;
+ $obj->saveOriginalVideoResolution = false;
+ self::addDataObjectHelper('saveOriginalVideoResolution', 'Do not save original video', 'This option will make your encoder at the end trancode the video into the original format resolution');
+ $obj->doNotShowExtractAudio = false;
+ $obj->doNotShowCreateVideoSpectrum = false;
+ $obj->doNotShowLeftMenuAudioAndVideoButtons = false;
+ $obj->doNotShowWebsiteOnContactForm = false;
+ $obj->doNotUseXsendFile = false;
+ $obj->makeVideosInactiveAfterEncode = false;
+ $obj->makeVideosUnlistedAfterEncode = false;
+ $obj->usePermalinks = false;
+ $obj->useVideoIDOnSEOLinks = true;
+ $obj->disableAnimatedGif = false;
+ $obj->removeBrowserChannelLinkFromMenu = false;
+ $obj->EnableMinifyJS = false;
+ $obj->disableShareAndPlaylist = false;
+ $obj->disableShareOnly = false;
+ $obj->disableEmailSharing = false;
+ $obj->splitBulkEmailSend = 50;
+ $obj->disableComments = false;
+ $obj->commentsMaxLength = 200;
+ $obj->commentsNoIndex = false;
+ $obj->disableYoutubePlayerIntegration = false;
+ $obj->utf8Encode = false;
+ $obj->utf8Decode = false;
+ $o = new stdClass();
+ $o->type = "textarea";
+ $o->value = "";
+ $obj->menuBarHTMLCode = $o;
+ $o->type = "textarea";
+ $o->value = "";
+ $obj->underMenuBarHTMLCode = $o;
+ $o->type = "textarea";
+ $o->value = "";
+ $obj->footerHTMLCode = $o;
+ $obj->signInOnRight = true;
+ $obj->signInOnLeft = true;
+ $obj->forceCategory = false;
+ $obj->showCategoryTopImages = true;
+ $obj->autoPlayAjax = false;
+
+ $plugins = Plugin::getAllEnabled();
+ //import external plugins configuration options
+ foreach ($plugins as $value) {
+ $p = AVideoPlugin::loadPlugin($value['dirName']);
+ if (is_object($p)) {
+ $foreginObjects = $p->getCustomizeAdvancedOptions();
+ if ($foreginObjects) {
+ foreach ($foreginObjects as $optionName => $defaultValue)
+ $obj->{$optionName} = $defaultValue;
+ }
+ }
+ }
+
+ $obj->disableInstallPWAButton = false;
+ $obj->disablePlayLink = false;
+ $obj->disableHelpLeftMenu = false;
+ $obj->disableAboutLeftMenu = false;
+ $obj->disableContactLeftMenu = false;
+ $obj->disableAnimations = false;
+ $obj->disableNavbar = false;
+ $obj->disableNavBarInsideIframe = true;
+ $obj->autoHideNavbar = true;
+ $obj->autoHideNavbarInSeconds = 0;
+ $obj->videosCDN = "";
+ $obj->useFFMPEGToGenerateThumbs = false;
+ $obj->thumbsWidthPortrait = 170;
+ $obj->thumbsHeightPortrait = 250;
+ $obj->thumbsWidthLandscape = 640;
+ $obj->thumbsHeightLandscape = 360;
+ $obj->usePreloadLowResolutionImages = false;
+ $obj->showImageDownloadOption = false;
+ $obj->doNotDisplayViews = false;
+ $obj->doNotDisplayLikes = false;
+ $obj->doNotDisplayCategoryLeftMenu = false;
+ $obj->doNotDisplayCategory = false;
+ $obj->doNotDisplayGroupsTags = false;
+ $obj->doNotDisplayPluginsTags = false;
+ $obj->showNotRatedLabel = false;
+ $obj->showShareMenuOpenByDefault = false;
+
+ foreach ($global['social_medias'] as $key => $value) {
+ eval("\$obj->showShareButton_{$key} = true;");
+ }
+
+ $obj->askRRatingConfirmationBeforePlay_G = false;
+ $obj->askRRatingConfirmationBeforePlay_PG = false;
+ $obj->askRRatingConfirmationBeforePlay_PG13 = false;
+ $obj->askRRatingConfirmationBeforePlay_R = false;
+ $obj->askRRatingConfirmationBeforePlay_NC17 = true;
+ $obj->askRRatingConfirmationBeforePlay_MA = true;
+ $obj->filterRRating = false;
+
+ $obj->doNotShowLeftHomeButton = false;
+ $obj->doNotShowLeftTrendingButton = false;
+
+ $obj->CategoryLabel = "Categories";
+ $obj->ShowAllVideosOnCategory = false;
+ $obj->hideCategoryVideosCount = false;
+ $obj->hideEditAdvancedFromVideosManager = false;
+
+ //ver 7.1
+ $obj->paidOnlyUsersTellWhatVideoIs = false;
+ $obj->paidOnlyShowLabels = false;
+ $obj->paidOnlyLabel = "Premium";
+ $obj->paidOnlyFreeLabel = "Free";
+ $obj->removeSubscribeButton = false;
+ $obj->removeThumbsUpAndDown = false;
+
+ $o = new stdClass();
+ $o->type = "textarea";
+ $o->value = "";
+ $obj->videoNotFoundText = $o;
+ $obj->siteMapRowsLimit = 100;
+ $obj->siteMapUTF8Fix = false;
+ $obj->showPrivateVideosOnSitemap = false;
+ $obj->enableOldPassHashCheck = true;
+ $obj->disableHTMLDescription = false;
+ $obj->disableVideoSwap = false;
+ $obj->makeSwapVideosOnlyForAdmin = false;
+ $obj->disableCopyEmbed = false;
+ $obj->disableDownloadVideosList = false;
+ $obj->videosManegerRowCount = "[10, 25, 50, -1]"; //An Array of Integer which will be shown in the dropdown box to choose the row count. Default value is [10, 25, 50, -1]. -1 means all. When passing an Integer value the dropdown box will disapear.
+ $obj->videosListRowCount = "[10, 20, 30, 40, 50]"; //An Array of Integer which will be shown in the dropdown box to choose the row count. Default value is [10, 25, 50, -1]. -1 means all. When passing an Integer value the dropdown box will disapear.
+ $obj->videosManegerBulkActionButtons = true;
+
+ $parse = parse_url($global['webSiteRootURL']);
+ $domain = str_replace(".", "", $parse['host']);
+ $obj->twitter_site = "@{$domain}";
+ $obj->twitter_player = true;
+ $obj->twitter_summary_large_image = false;
+ $obj->footerStyle = "position: fixed;bottom: 0;width: 100%;";
+ $obj->disableVideoTags = false;
+ $obj->doNotAllowEncoderOverwriteStatus = false;
+ $obj->doNotAllowUpdateVideoId = false;
+ $obj->makeVideosIDHarderToGuess = false;
+ self::addDataObjectHelper('makeVideosIDHarderToGuess', 'Make the videos ID harder to guess', 'This will change the videos_id on the URL to a crypted value. this crypt user your $global[salt] (configuration.php), so make sure you keep it save in case you need to restore your site, otherwise all the shared links will be lost');
+
+ $o = new stdClass();
+ $o->type = DateTimeZone::listIdentifiers(DateTimeZone::ALL);
+ $o->value = 0;
+ $obj->timeZone = $o;
+
+ $obj->keywords = "AVideo, videos, live, movies";
+ $obj->doNotSaveCacheOnFilesystem = false;
+
+ $o = new stdClass();
+ $o->type = "textarea";
+ $o->value = "Allow: /plugin/Live/?*
+Allow: /plugin/PlayLists/*.css
+Allow: /plugin/PlayLists/*.js
+Allow: /plugin/TopMenu/*.css
+Allow: /plugin/TopMenu/*.js
+Allow: /plugin/SubtitleSwitcher/*.css
+Allow: /plugin/SubtitleSwitcher/*.js
+Allow: /plugin/Gallery/*.css
+Allow: /plugin/Gallery/*.js
+Allow: /plugin/YouPHPFlix2/*.png
+Allow: /plugin/Live/*.css
+Allow: /plugin/Live/*.js
+Allow: /plugin/*.css
+Allow: /plugin/*.js
+Allow: .js
+Allow: .css
+Disallow: /user
+Disallow: /plugin
+Disallow: /mvideos
+Disallow: /usersGroups
+Disallow: /charts
+Disallow: /upload
+Disallow: /comments
+Disallow: /subscribes
+Disallow: /update
+Disallow: /locale
+Disallow: /objects/*
+Allow: /plugin/Live/?*
+Allow: /plugin/LiveLink/?*
+Allow: /plugin/PlayLists/*.css
+Allow: /plugin/PlayLists/*.js
+Allow: /plugin/TopMenu/*.css
+Allow: /plugin/TopMenu/*.js
+Allow: /plugin/SubtitleSwitcher/*.css
+Allow: /plugin/SubtitleSwitcher/*.js
+Allow: /plugin/Gallery/*.css
+Allow: /plugin/Gallery/*.js
+Allow: /plugin/YouPHPFlix2/*.png
+Allow: /plugin/Live/*.css
+Allow: /plugin/Live/*.js
+Allow: /plugin/*.css
+Allow: /plugin/*.js
+Allow: .js
+Allow: .css";
+ $obj->robotsTXT = $o;
+ self::addDataObjectHelper('robotsTXT', 'robots.txt file content', 'robots.txt is a plain text file that follows the Robots Exclusion Standard. A robots.txt file consists of one or more rules. Each rule blocks (or allows) access for a given crawler to a specified file path in that website.');
+
+ return $obj;
+ }
+
+ public function getHelp() {
+ if (User::isAdmin()) {
+ return "CustomizeAdvanced (admin) " . $this->getDescription() . "
";
+ }
+ return "";
+ }
+
+ public function getModeYouTube($videos_id) {
+ global $global, $config;
+ $obj = $this->getDataObject();
+ $video = Video::getVideo($videos_id, "viewable", true);
+ if (!empty($video['rrating']) && empty($_GET['rrating'])) {
+ $suffix = strtoupper(str_replace("-", "", $video['rrating']));
+ eval("\$show = \$obj->askRRatingConfirmationBeforePlay_$suffix;");
+ if (!empty($show)) {
+ include "{$global['systemRootPath']}plugin/CustomizeAdvanced/confirmRating.php";
+ exit;
+ }
+ }
+ }
+
+ public function getEmbed($videos_id) {
+ return $this->getModeYouTube($videos_id);
+ }
+
+ public function getFooterCode() {
+ global $global;
+
+ $obj = $this->getDataObject();
+ $content = '';
+ if ($obj->autoHideNavbar && !isEmbed()) {
+ $content .= '';
+ $content .= '';
+ }
+ if ($obj->autoHideNavbarInSeconds && !isEmbed()) {
+ $content .= '';
+ }
+ return $content;
+ }
+
+ public function getHTMLMenuRight() {
+ global $global, $config,$advancedCustom;
+ $obj = $this->getDataObject();
+ if (!empty($obj->menuBarHTMLCode->value)) {
+ echo $obj->menuBarHTMLCode->value;
+ }
+ if ($obj->filterRRating) {
+ include $global['systemRootPath'] . 'plugin/CustomizeAdvanced/menuRight.php';
+ }
+ if (User::canUpload() && empty($obj->doNotShowUploadButton)) {
+ include $global['systemRootPath'] . 'view/include/navbarUpload.php';
+ } else {
+ include $global['systemRootPath'] . 'view/include/navbarNotUpload.php';
+ }
+ }
+
+ public function getHTMLMenuLeft() {
+ global $global;
+ $obj = $this->getDataObject();
+ if ($obj->filterRRating) {
+ include $global['systemRootPath'] . 'plugin/CustomizeAdvanced/menuLeft.php';
+ }
+ }
+
+ public static function getVideoWhereClause() {
+ $sql = "";
+ $obj = AVideoPlugin::getObjectData("CustomizeAdvanced");
+ if ($obj->filterRRating && isset($_GET['rrating'])) {
+ if ($_GET['rrating'] === "0") {
+ $sql .= " AND v.rrating = ''";
+ } else if (in_array($_GET['rrating'], Video::$rratingOptions)) {
+ $sql .= " AND v.rrating = '{$_GET['rrating']}'";
+ }
+ }
+ return $sql;
+ }
+
+ public function getVideosManagerListButton() {
+ $btn = "";
+ if (User::isAdmin()) {
+ $btn = ' ' . __("Update Disk Usage") . ' ';
+ $btn .= ' ' . __("Remove Thumbs") . ' ';
+ }
+ return $btn;
+ }
+
+ public function getHeadCode() {
+ global $global;
+ $obj = $this->getDataObject();
+
+ if ($obj->makeVideosIDHarderToGuess) {
+ if (isVideo()) {
+ if (!empty($global['makeVideosIDHarderToGuessNotDecrypted'])) {
+ unset($global['makeVideosIDHarderToGuessNotDecrypted']);
+ forbiddenPage(__('Invalid ID'));
+ }
+ }
+ }
+
+ $baseName = basename($_SERVER['REQUEST_URI']);
+
+ $js = "";
+ if (empty($obj->autoPlayAjax)) {
+ $js .= "";
+ } else {
+ $js .= "";
+ }
+ if ($baseName === 'mvideos') {
+ $js .= "";
+ $js .= "";
+ }
+ return $js;
+ }
+
+ public function onReceiveFile($videos_id) {
+ Video::updateFilesize($videos_id);
+ return true;
+ }
+
+}
+
+class SocialMedias {
+
+ public $href;
+ public $class;
+ public $title;
+ public $iclass;
+ public $img;
+ public $onclick;
+
+ function __construct($iclass, $img = '') {
+ $this->iclass = $iclass;
+ $this->img = $img;
+ }
+
+ function getHref() {
+ return $this->href;
+ }
+
+ function getClass() {
+ return $this->class;
+ }
+
+ function getTitle() {
+ return $this->title;
+ }
+
+ function getIclass() {
+ return $this->iclass;
+ }
+
+ function getImg() {
+ return $this->img;
+ }
+
+ function getOnclick() {
+ return $this->onclick;
+ }
+
+ function setHref($href): void {
+ $this->href = $href;
+ }
+
+ function setClass($class): void {
+ $this->class = $class;
+ }
+
+ function setTitle($title): void {
+ $this->title = $title;
+ }
+
+ function setIclass($iclass): void {
+ $this->iclass = $iclass;
+ }
+
+ function setImg($img): void {
+ $this->img = $img;
+ }
+
+ function setOnclick($onclick): void {
+ $this->onclick = $onclick;
+ }
+
+}
+
+$global['social_medias'] = array(
+ 'Facebook' => new SocialMedias('fab fa-facebook-square', ''),
+ 'Twitter' => new SocialMedias('fab fa-twitter', ''),
+ 'Tumblr' => new SocialMedias('fab fa-tumblr', ''),
+ 'Pinterest' => new SocialMedias('fab fa-pinterest-p', ''),
+ 'Reddit' => new SocialMedias('fab fa-reddit-alien', ''),
+ 'LinkedIn' => new SocialMedias('fab fa-linkedin-in', ''),
+ 'Wordpress' => new SocialMedias('fab fa-wordpress-simple', ''),
+ 'Pinboard' => new SocialMedias('fas fa-thumbtack', ''),
+ 'Gab' => new SocialMedias('', getURL('view/img/gab.png')),
+ 'CloutHub' => new SocialMedias('', getURL('view/img/cloutHub.png')),
+);
diff --git a/plugin/Gallery/style.css b/plugin/Gallery/style.css
index 72af13bd815b..daf0ba9fb2a2 100644
--- a/plugin/Gallery/style.css
+++ b/plugin/Gallery/style.css
@@ -1,220 +1,224 @@
-
-.gallery .duration {
- position: absolute;
- background: rgba(0, 0, 0, 0.6)!important;
- padding: 3px;
- color: #FFF;
- top: 5px;
- left: 25px;
- font-size: 0.9em;
- border-radius: 5px;
-}
-.gallery .title,
-.videosDetails .title {
- font-size: 1em;
- margin: 0;
- padding: 0;
- overflow: hidden;
- text-overflow: ellipsis;
- display: -webkit-box;
- line-height: 16px; /* fallback */
- max-height: 32px; /* fallback */
- min-height: 32px; /* fallback */
- -webkit-line-clamp: 2; /* number of lines to show */
-
- -webkit-box-orient: vertical;
-}
-.gallery .watch-view-count {
- font-size: 0.8em;
- font-weight: normal;
- border: 0;
- margin: 0;
- padding: 0;
-}
-.galleryVideo .group {
- overflow: hidden;
- text-overflow: ellipsis;
-}
-
-.mainArea{
- padding: 15px;
-}
-
-h3.galleryTitle{
- padding: 15px 5px;
-}
-
-.aspectRatio16_9 {
- position: relative;
- display: block;
- width: 100%;
- height: 0;
- padding-bottom: 56.25%;
- overflow: hidden;
-}
-
-.aspectRatio16_9 img{
- text-indent:-9999px;
- width: 100%;
- display: block;
- margin-left: auto;
- margin-right: auto;
-}
-
-.thumbsGIF{
- text-indent:-9999px;
- width: 100%;
- margin-left: auto;
- margin-right: auto;
-}
-
-.firstRow{
- margin-bottom: 10px;
- padding-bottom: 25px;
- border-bottom: solid 1px #EEE;
-}
-
-.galeryDetails{
- font-size: smaller;
-}
-
-.galeryDetails div{
- float: left;
- overflow: hidden;
- white-space: nowrap;
- text-overflow: ellipsis;
- padding-right: 5px;
- margin: 2px 0;
-}
-
-.firstRow .galeryDetails div{
- font-size: 1em;
-}
-
-.galeryDetails div.userName{
- width: 100%;
-}
-.fixPadding{
- padding: 0 5px;
-}
-
-.popover-content, .popover-content>div{
- white-space: normal !important;
- width: auto;
- color: inherit !important;
-}
-.popover-content>div{
- overflow-y: auto;
- height: 140px;
-}
-
-.mainAreaDescription{
- position:relative;
- height:100%;
- width: 110%;
- padding-right: 10%;
- overflow-x:hidden;
- overflow-y:scroll;
- max-height: 17vw;
-}
-.mainAreaDescriptionContainer{
- position: relative;
- overflow: hidden;
-}
-a.h6{
- text-decoration: none !important;
-}
-
-.popover-title {
- color: black;
- font-size: 1em;
-}
-
-.popover-content{
- color: black !important;
- font-size: 0.8em;
-}
-
-.gallery .label{
- border-radius: 0;
-}
-.gallery .label:first-child{
- border-top-left-radius: 0.25em;
- border-bottom-left-radius: 0.25em;
-}
-.gallery .label:last-child{
- border-top-right-radius: 0.25em;
- border-bottom-right-radius: 0.25em;
-}
-
-.galleryTitle a.btn-default:hover{
- background-color: transparent;
-}
-
-.galeryRowElement .galleryVideo {
- margin-bottom: 10px;
-}
-
-.galleryVideoButtons{
- position: absolute;
- right: 5px;
- top: 5px;
- z-index: 1025;
- display: none;
-}
-.galleryVideo .galleryVideoButtons button{
- opacity: 0.5;
-}
-.galleryVideo:hover .galleryVideoButtons{
- display: block !important;
-}
-.galleryVideo .galleryVideoButtons button:hover{
- opacity: 1;
-}
-
-.gallerySerieOverlay{
- position: absolute;
- left: 0;
- top: 0;
- z-index: 1020;
- width: 100%;
- height: 100%;
- background-color: rgba(0,0,0,0);
- color: rgba(0,0,0,0);
- -webkit-box-align:center;
- -webkit-box-pack:center;
- display:-webkit-box;
- font-weight: bold;
-}
-.gallerySerieOverlay:hover{
- background-color: rgba(0,0,0,0.5);
- color: #FFF;
-}
-.gallerySerieOverlayTotal{
- position: absolute;
- right: 0;
- top: 0;
- width: 25%;
- height: 100%;
- background-color: rgba(0,0,0,0.5);
- color: #FFF;
- -webkit-box-align:center;
- -webkit-box-pack:center;
- display:-webkit-box;
- font-weight: bold;
-}
-.galleryTags .label{
- display: table-cell;
- font-size: 0.9em;
-}
-.galleryTags{
- margin: 0 !important;
-}
-
-.isChannelToGallery .addChannelToGallery, .removeChannelFromGallery{
- display: none;
-}
-
-.isChannelToGallery .removeChannelFromGallery {
- display: inline-block;
+
+.gallery .duration {
+ position: absolute;
+ background: rgba(0, 0, 0, 0.6)!important;
+ padding: 3px;
+ color: #FFF;
+ top: 5px;
+ left: 25px;
+ font-size: 0.9em;
+ border-radius: 5px;
+}
+.gallery .title,
+.videosDetails .title {
+ font-size: 1em;
+ margin: 0;
+ padding: 5px 0 0 0;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ display: -webkit-box;
+ line-height: 1em; /* fallback */
+ max-height: 32px; /* fallback */
+ min-height: 32px; /* fallback */
+ -webkit-line-clamp: 2; /* number of lines to show */
+ -webkit-box-orient: vertical;
+}
+.gallery .watch-view-count {
+ font-size: 0.8em;
+ font-weight: normal;
+ border: 0;
+ margin: 0;
+ padding: 0;
+}
+.galleryVideo .group {
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+
+.mainArea{
+ padding: 15px;
+}
+
+h3.galleryTitle{
+ padding: 15px 5px;
+}
+
+.aspectRatio16_9 {
+ position: relative;
+ display: block;
+ width: 100%;
+ height: 0;
+ padding-bottom: 56.25%;
+ overflow: hidden;
+}
+
+.aspectRatio16_9 img{
+ text-indent:-9999px;
+ width: 100%;
+ display: block;
+ margin-left: auto;
+ margin-right: auto;
+}
+
+.thumbsGIF{
+ text-indent:-9999px;
+ width: 100%;
+ margin-left: auto;
+ margin-right: auto;
+}
+
+.firstRow{
+ margin-bottom: 10px;
+ padding-bottom: 25px;
+ border-bottom: solid 1px #EEE;
+}
+
+.galeryDetails{
+ font-size: smaller;
+}
+
+.galeryDetails div{
+ float: left;
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ padding-right: 5px;
+ margin: 2px 0;
+}
+
+.firstRow .galeryDetails div{
+ font-size: 1em;
+}
+
+.galeryDetails div.userName{
+ width: 100%;
+}
+.fixPadding{
+ padding: 0 5px;
+}
+
+.popover-content, .popover-content>div{
+ white-space: normal !important;
+ width: auto;
+ color: inherit !important;
+}
+.popover-content>div{
+ overflow-y: auto;
+ height: 140px;
+}
+
+.mainAreaDescription{
+ position:relative;
+ height:100%;
+ width: 110%;
+ padding-right: 10%;
+ overflow-x:hidden;
+ overflow-y:scroll;
+ max-height: 17vw;
+}
+.mainAreaDescriptionContainer{
+ position: relative;
+ overflow: hidden;
+}
+a.h6{
+ text-decoration: none !important;
+}
+
+.popover-title {
+ color: black;
+ font-size: 1em;
+}
+
+.popover-content{
+ color: black !important;
+ font-size: 0.8em;
+}
+
+.gallery .label{
+ border-radius: 0;
+}
+.gallery .label:first-child{
+ border-top-left-radius: 0.25em;
+ border-bottom-left-radius: 0.25em;
+}
+.gallery .label:last-child{
+ border-top-right-radius: 0.25em;
+ border-bottom-right-radius: 0.25em;
+}
+
+.galleryTitle a.btn-default:hover{
+ background-color: transparent;
+}
+
+.galeryRowElement .galleryVideo {
+ margin-bottom: 10px;
+}
+
+.galleryVideoButtons{
+ position: absolute;
+ right: 5px;
+ top: 5px;
+ z-index: 1025;
+ display: none;
+
+}
+.galleryVideo .galleryVideoButtons button{
+ opacity: 0.5;
+ display: inline-grid;
+ padding: 2px;
+ justify-content: center;
+ width: 24px;
+}
+.galleryVideo:hover .galleryVideoButtons{
+ display: block !important;
+}
+.galleryVideo .galleryVideoButtons button:hover{
+ opacity: 1;
+}
+
+.gallerySerieOverlay{
+ position: absolute;
+ left: 0;
+ top: 0;
+ z-index: 1020;
+ width: 100%;
+ height: 100%;
+ background-color: rgba(0,0,0,0);
+ color: rgba(0,0,0,0);
+ -webkit-box-align:center;
+ -webkit-box-pack:center;
+ display:-webkit-box;
+ font-weight: bold;
+}
+.gallerySerieOverlay:hover{
+ background-color: rgba(0,0,0,0.5);
+ color: #FFF;
+}
+.gallerySerieOverlayTotal{
+ position: absolute;
+ right: 0;
+ top: 0;
+ width: 25%;
+ height: 100%;
+ background-color: rgba(0,0,0,0.5);
+ color: #FFF;
+ -webkit-box-align:center;
+ -webkit-box-pack:center;
+ display:-webkit-box;
+ font-weight: bold;
+}
+.galleryTags .label{
+ display: table-cell;
+ font-size: 0.9em;
+}
+.galleryTags{
+ margin: 0 !important;
+}
+
+.isChannelToGallery .addChannelToGallery, .removeChannelFromGallery{
+ display: none;
+}
+
+.isChannelToGallery .removeChannelFromGallery {
+ display: inline-block;
}
\ No newline at end of file
diff --git a/plugin/Gallery/view/BigVideo.php b/plugin/Gallery/view/BigVideo.php
index a87cb9ac3e51..02cc470167b9 100644
--- a/plugin/Gallery/view/BigVideo.php
+++ b/plugin/Gallery/view/BigVideo.php
@@ -1,306 +1,306 @@
-BigVideo && empty($_GET['showOnly'])) {
-
- if (!empty($obj->useSuggestedVideosAsCarouselInBigVideo)) {
- //getAllVideos($status = "viewable", $showOnlyLoggedUserVideos = false, $ignoreGroup = false, $videosArrayId = array(), $getStatistcs = false, $showUnlisted = false, $activeUsersOnly = true)
- //$videoRows = Video::getAllVideosLight("viewable", !$obj->hidePrivateVideos, false, true);
- $_REQUEST['rowCount'] = 20;
- $_REQUEST['current'] = 1;
- $videoRows = Video::getAllVideos("viewable", false, !$obj->hidePrivateVideos, array(), false, false, true, true);
- }
- if (empty($videoRows)) {
- $videoRows = array($video);
- }
- $class = '';
- $classInner = '';
- if (count($videoRows) > 1) {
- $class = 'carousel slide';
- $classInner = 'carousel-inner';
- }
- ?>
-
-
-
-
- 1) {
- ?>
-
-
- " style="border-color: #DDD;">
-
-
-
-
- getName();
- $videoRow['clean_category'] = $category->getClean_name();
- $videoRow['iconClass'] = $category->getIconClass();
- $videoRow['videoCreation'] = $videoRow['created'];
- $name = User::getNameIdentificationById($videoRow['users_id']);
- if (empty($get)) {
- $get = array();
- }
- $bigVideoAd = getAdsLeaderBoardBigVideo();
- $colClass1 = "col-sm-5";
- $colClass2 = "col-sm-7";
- $colClass3 = "";
- if (!empty($bigVideoAd)) {
- $colClass1 = "col-sm-4";
- $colClass2 = "col-sm-8";
- $colClass3 = "col-sm-6";
- }
- $isserie = Video::isSerie($videoRow['id']);
-
- $isserieClass = "";
- if ($isserie) {
- $isserieClass = "isserie";
- }
- ?>
-
">
-
-
-
-
-
-
-
-
-
-
-
-
- doNotDisplayViews)) {
- if (AVideoPlugin::isEnabledByName('LiveUsers')) {
- echo getLiveUsersLabelVideo($videoRow['id'], $videoRow['views_count'], "", "");
- } else {
- ?>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- uploadButtonDropdownText) ? $advancedCustom->uploadButtonDropdownText : ""; ?>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BigVideo && empty($_GET['showOnly'])) {
+
+ if (!empty($obj->useSuggestedVideosAsCarouselInBigVideo)) {
+ //getAllVideos($status = "viewable", $showOnlyLoggedUserVideos = false, $ignoreGroup = false, $videosArrayId = array(), $getStatistcs = false, $showUnlisted = false, $activeUsersOnly = true)
+ //$videoRows = Video::getAllVideosLight("viewable", !$obj->hidePrivateVideos, false, true);
+ $_REQUEST['rowCount'] = 20;
+ $_REQUEST['current'] = 1;
+ $videoRows = Video::getAllVideos("viewable", false, !$obj->hidePrivateVideos, array(), false, false, true, true);
+ }
+ if (empty($videoRows)) {
+ $videoRows = array($video);
+ }
+ $class = '';
+ $classInner = '';
+ if (count($videoRows) > 1) {
+ $class = 'carousel slide';
+ $classInner = 'carousel-inner';
+ }
+ ?>
+
+
+
+
+ 1) {
+ ?>
+
+
+ " style="border-color: #DDD;">
+
+
+
+
+ getName();
+ $videoRow['clean_category'] = $category->getClean_name();
+ $videoRow['iconClass'] = $category->getIconClass();
+ $videoRow['videoCreation'] = $videoRow['created'];
+ $name = User::getNameIdentificationById($videoRow['users_id']);
+ if (empty($get)) {
+ $get = array();
+ }
+ $bigVideoAd = getAdsLeaderBoardBigVideo();
+ $colClass1 = "col-sm-5";
+ $colClass2 = "col-sm-7";
+ $colClass3 = "";
+ if (!empty($bigVideoAd)) {
+ $colClass1 = "col-sm-4";
+ $colClass2 = "col-sm-8";
+ $colClass3 = "col-sm-6";
+ }
+ $isserie = Video::isSerie($videoRow['id']);
+
+ $isserieClass = "";
+ if ($isserie) {
+ $isserieClass = "isserie";
+ }
+ ?>
+
">
+
+
+
+
+
+
+
+
+
+
+
+
+ doNotDisplayViews)) {
+ if (AVideoPlugin::isEnabledByName('LiveUsers')) {
+ echo getLiveUsersLabelVideo($videoRow['id'], $videoRow['views_count'], "", "");
+ } else {
+ ?>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ uploadButtonDropdownText) ? $advancedCustom->uploadButtonDropdownText : ""; ?>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ webRTC_PushRTMP = false;
self::addDataObjectHelper('webRTC_PushRTMP', 'PushRTMP', 'Self Hosted only If it is unchecked we will restream the Webcam instead of pushing it');
+ $o = new stdClass();
+ $o->type = "textarea";
+ $o->value = "Hi {UserIdentification},
+
+This is a friendly reminder that the live {liveTitle} will start in {timeToStart} .
+
+Click here to join our live.";
+ $obj->reminderText = $o;
+
return $obj;
}
@@ -1428,6 +1438,11 @@ public static function getLinkToLiveFromChannelNameAndLiveServer($channelName, $
$url = "{$global['webSiteRootURL']}live/{$live_servers_id}/" . urlencode($channelName);
+ $live_schedule_id = intval($live_schedule_id);
+ if (!empty($live_schedule_id)) {
+ $url = "{$url}/ls/{$live_schedule_id}";
+ }
+
if (!empty($live_index)) {
$url .= '/' . urlencode($live_index);
} elseif (!isset($live_index) && !empty($_REQUEST['live_index'])) {
@@ -1437,10 +1452,6 @@ public static function getLinkToLiveFromChannelNameAndLiveServer($channelName, $
if (!empty($_REQUEST['playlists_id_live'])) {
$url = addQueryStringParameter($url, 'playlists_id_live', $_REQUEST['playlists_id_live']);
}
- $live_schedule_id = intval($live_schedule_id);
- if (!empty($live_schedule_id)) {
- $url = addQueryStringParameter($url, 'live_schedule', $live_schedule_id);
- }
//return "{$global['webSiteRootURL']}plugin/Live/?live_servers_id={$live_servers_id}&c=" . urlencode($channelName);
return $url;
@@ -1510,6 +1521,22 @@ public function getPluginMenu() {
}
return $btn;
}
+
+ public static function unfinishAllFromStats($force_recreate = false){
+ $stats = self::getStats($force_recreate);
+
+ foreach ($stats as $server) {
+ foreach ($server as $live) {
+ if(!empty($live->key)){
+ $row = LiveTransmitionHistory::getLatest($live->key, @$live->live_servers_id);
+ if(!empty($row['finished'])){
+ LiveTransmitionHistory::unfinishFromTransmitionHistoryId($row['id']);
+ }
+ }
+ }
+ }
+
+ }
public static function getStats($force_recreate = false) {
global $getStatsLive, $_getStats, $getStatsObject;
@@ -1587,8 +1614,8 @@ public static function getStats($force_recreate = false) {
}
public static function isAdaptive($key) {
- if(!is_string($key)){
- _error_log('isAdaptive ERROR '._json_encode($key));
+ if (!is_string($key)) {
+ _error_log('isAdaptive ERROR ' . _json_encode($key));
return false;
}
if (preg_match('/_(hi|low|mid)$/i', $key)) {
@@ -1750,7 +1777,12 @@ public static function getLiveTransmitionObjectFromKey($key) {
if (empty($livet)) {
$getLiveTransmitionObjectFromKey[$parts[0]] = false;
} else {
- $lt = new LiveTransmition($livet['id']);
+ if (!empty($livet['live_schedule_id'])) {
+ $lt = new Live_schedule($livet['live_schedule_id']);
+ } else {
+ $lt = new LiveTransmition($livet['id']);
+ }
+
$getLiveTransmitionObjectFromKey[$parts[0]] = $lt;
}
}
@@ -2704,7 +2736,7 @@ public static function on_publish($liveTransmitionHistory_id) {
$lt = new LiveTransmitionHistory($liveTransmitionHistory_id);
$users_id = $lt->getUsers_id();
$live_servers_id = $lt->getLive_servers_id();
-
+
_error_log("on_publish: liveTransmitionHistory_id={$liveTransmitionHistory_id} users_id={$users_id} live_servers_id={$live_servers_id} ");
AVideoPlugin::onLiveStream($users_id, $live_servers_id);
}
@@ -3246,36 +3278,36 @@ public static function getMediaSessionPosters($users_id, $live_servers_id, $live
}
return false;
}
-
- public static function getInfo($key, $live_servers_id = null){
-
+
+ public static function getInfo($key, $live_servers_id = null, $live_index = '') {
+
$array = array(
- 'key' => $key,
- 'live_schedule_id' => 0,
- 'users_id' => 0,
- 'live_servers_id' => $live_servers_id,
- 'history' => false,
- 'isLive' => false,
- 'isFinished' => false,
- 'finishedDateTime' => __('Not finished'),
- 'finishedSecondsAgo' => 0,
- 'finishedHumanAgo' => __('Not finished'),
- 'isStarded' => false,
- 'startedDateTime' => __('Not started'),
- 'startedSecondsAgo' => 0,
- 'startedHumanAgo' => __('Not started'),
+ 'key' => $key,
+ 'live_schedule_id' => 0,
+ 'users_id' => 0,
+ 'live_servers_id' => $live_servers_id,
+ 'history' => false,
+ 'isLive' => false,
+ 'isFinished' => false,
+ 'finishedDateTime' => __('Not finished'),
+ 'finishedSecondsAgo' => 0,
+ 'finishedHumanAgo' => __('Not finished'),
+ 'isStarded' => false,
+ 'startedDateTime' => __('Not started'),
+ 'startedSecondsAgo' => 0,
+ 'startedHumanAgo' => __('Not started'),
);
-
+
$lt = LiveTransmition::getFromKey($key);
- if(empty($lt)){
+ if (empty($lt)) {
return $array;
}
$array['transmission'] = $lt;
$array['live_schedule_id'] = $lt['live_schedule_id'];
$array['users_id'] = $lt['users_id'];
-
+
$lth = LiveTransmitionHistory::getLatest($key, $live_servers_id);
- if(empty($lth)){
+ if (empty($lth)) {
return $array;
}
$array['history'] = $lth;
@@ -3283,18 +3315,168 @@ public static function getInfo($key, $live_servers_id = null){
$array['isStarded'] = true;
$array['startedDateTime'] = $lth['created'];
$array['startedSecondsAgo'] = secondsIntervalFromNow($lth['created'], true);
- $array['startedHumanAgo'] = __('Started').' '.humanTimingAgo($lth['created']);
-
- if(!empty($lth['finished'])){
- $array['isLive'] = false;
- $array['isFinished'] = true;
- $array['finishedDateTime'] = $livet['finished'];
- $array['finishedSecondsAgo'] = secondsIntervalFromNow($lth['finished'], true);
- $array['finishedHumanAgo'] = __('Finished').' '.humanTimingAgo($lth['finished']);
+ $array['startedHumanAgo'] = __('Started') . ' ' . humanTimingAgo($lth['created']);
+
+ if (!empty($lth['finished'])) {
+ $isKeyLiveInStats = self::isKeyLiveInStats($key, $live_servers_id, $live_index);
+ if(empty($isKeyLiveInStats)){
+ $array['isLive'] = false;
+ $array['isFinished'] = true;
+ $array['finishedDateTime'] = $lth['finished'];
+ $array['finishedSecondsAgo'] = secondsIntervalFromNow($lth['finished'], true);
+ $array['finishedHumanAgo'] = __('Finished') . ' ' . humanTimingAgo($lth['finished']);
+ }else{
+ LiveTransmitionHistory::unfinishFromTransmitionHistoryId($lth['id']);
+ }
}
+
+ $array['displayTime'] = '';
+ if ($array['isFinished']) {
+ $array['displayTime'] = $array['finishedHumanAgo'];
+ if(!empty($lt['scheduled_time'])){
+ $time = getTimeInTimezone($lt['scheduled_time'], $lt['timezone']);
+ $displayTime = strtotime($array['finishedDateTime']);
+
+ //var_dump($time, $displayTime, $lt['scheduled_time'], $lt['timezone'], $array['finishedDateTime']);exit;
+ if($time > $displayTime){
+ $array['displayTime'] = __('Will start in') . ' ' . humanTiming($time). ", {$lt['scheduled_time']}, {$lt['timezone']}";
+ }
+ }
+ } else if ($array['isStarded']) {
+ $array['displayTime'] = $array['startedHumanAgo'];
+ }
+
return $array;
}
+ public static function setLiveScheduleReminder($live_schedule_id, $minutesEarlier = 0, $deleteIfExists = false) {
+
+ $obj = new stdClass();
+ $obj->error = true;
+ $obj->msg = '';
+ $obj->deleted = false;
+ $obj->scheduler_commands_id = 0;
+ $obj->deleted_id = 0;
+
+ if (!User::isLogged()) {
+ $obj->msg = __('Must be logged');
+ return $obj;
+ }
+
+ if (!AVideoPlugin::isEnabledByName('Scheduler')) {
+ $obj->msg = 'Scheduler is disabled';
+ return $obj;
+ }
+
+ if (empty($live_schedule_id)) {
+ $obj->msg = 'live_schedule_id cannot be empty';
+ return $obj;
+ }
+
+ $ls = new Live_schedule($live_schedule_id);
+ $to_users_id = User::getId();
+ $users_id = Live_schedule::getUsers_idOrCompany($live_schedule_id);
+
+ if (empty($users_id)) {
+ $obj->msg = 'users_id cannot be empty';
+ return $obj;
+ }
+
+ $date_to_execute = strtotime($ls->getScheduled_time() . " -{$minutesEarlier} minutes");
+
+ $reminders = self::getLiveScheduleReminders($live_schedule_id);
+ foreach ($reminders as $value) {
+ if (strtotime($value['date_to_execute']) === $date_to_execute) {
+ if ($deleteIfExists) {
+ $e = new Scheduler_commands($value['id']);
+ $obj->deleted_id = $value['id'];
+ $obj->deleted = $e->delete();
+ $obj->error = empty($obj->deleted);
+ } else {
+ $obj->msg = __('Reminder already set');
+ }
+ return $obj;
+ }
+ }
+
+
+ $objLive = AVideoPlugin::getDataObject('Live');
+ $emailEmailBody = __($objLive->reminderText->value, true);
+ $UserIdentification = User::getNameIdentification();
+ $liveTitle = Live::getTitleFromUsers_Id($users_id);
+ $link = Live::getLinkToLiveFromUsers_id($users_id);
+ $timeToStart = humanTiming($ls->getScheduled_time());
+ $emailEmailBody = str_replace(array('{UserIdentification}', '{liveTitle}', '{link}', '{timeToStart}'), array($UserIdentification, $liveTitle, $link, $timeToStart), $emailEmailBody);
+
+ $emailTo = $to_users_id;
+ $emailSubject = $ls->getTitle() . ' - ' . __('Live reminder');
+ $emailFrom = $users_id;
+ $emailFromName = User::getNameIdentificationById($users_id);
+
+ $type = self::getLiveScheduleReminderBaseNameType($live_schedule_id, $minutesEarlier);
+ $type = "{$type}_{$users_id}";
+
+ $obj->scheduler_commands_id = Scheduler::addSendEmail($date_to_execute, $emailTo, $emailSubject, $emailEmailBody, $emailFrom, $emailFromName, $type);
+
+ $obj->error = empty($obj->scheduler_commands_id);
+
+ return $obj;
+ }
+
+ public static function getLiveScheduleReminders($live_schedule_id) {
+ $type = self::getLiveScheduleReminderBaseNameType($live_schedule_id);
+ return Scheduler_commands::getAllActiveOrToRepeat($type);
+ }
+
+ public static function getLiveScheduleReminderBaseNameType($live_schedule_id, $minutesEarlier = '') {
+ $to_users_id = User::getId();
+ $type = "LiveScheduleReminder_{$to_users_id}_{$live_schedule_id}";
+ if (!empty($minutesEarlier)) {
+ $type .= "_{$minutesEarlier}";
+ }
+ return $type;
+ }
+
+ static public function getScheduleReminderOptions($live_schedule_id) {
+ global $global;
+ $destinationURL = "{$global['webSiteRootURL']}plugin/Live/remindMe.json.php";
+ $destinationURL = addQueryStringParameter($destinationURL, 'live_schedule_id', $live_schedule_id);
+ $destinationURL = addQueryStringParameter($destinationURL, 'deleteIfExists', 1);
+ $selectedEarlierOptions = array();
+
+ $schedules = self::getLiveScheduleReminders($live_schedule_id);
+ $type = self::getLiveScheduleReminderBaseNameType($live_schedule_id);
+ //var_dump($type);
+ foreach ($schedules as $value) {
+ $parts = explode('_', $value["type"]);
+ //var_dump($parts);
+ $selectedEarlierOptions[] = intval($parts[3]);
+ }
+
+ $ls = new Live_schedule($_REQUEST['live_schedule_id']);
+
+ $ls = new Live_schedule($live_schedule_id);
+ $users_id = Live_schedule::getUsers_idOrCompany($live_schedule_id);
+ $title = $ls->getTitle();
+ $date_start = $ls->getScheduled_time();
+ $date_end = '';
+ $joinURL = Live::getLinkToLiveFromUsers_id($users_id);
+ $joinURL = addQueryStringParameter($joinURL, 'live_schedule', $live_schedule_id);
+
+ // , $date_start, $selectedEarlierOptions = array(), $date_end = '', $joinURL='', $description=''
+
+ return Scheduler::getReminderOptions($destinationURL, $title, $date_start, $selectedEarlierOptions, $date_end, $joinURL);
+
+ }
+
+ public function getWatchActionButton($videos_id): string {
+ $isLive = isLive();
+ if (!empty($isLive['live_schedule'])) {
+ return ' ' . __('Remind Me') . ' ';
+ }
+ return '';
+ }
+
}
class LiveImageType {
@@ -3475,4 +3657,5 @@ public function getRTMPLinkWithOutKey($short = true) {
$lt = LiveTransmition::getFromKey($this->key);
return Live::getServerURL($this->key, $lt['users_id'], $short);
}
+
}
diff --git a/plugin/Live/Objects/LiveTransmitionHistory.php b/plugin/Live/Objects/LiveTransmitionHistory.php
index b01167f1fdbd..141596798988 100644
--- a/plugin/Live/Objects/LiveTransmitionHistory.php
+++ b/plugin/Live/Objects/LiveTransmitionHistory.php
@@ -399,12 +399,25 @@ public static function finishFromTransmitionHistoryId($live_transmitions_history
global $global;
$live_transmitions_history_id = intval($live_transmitions_history_id);
if (empty($live_transmitions_history_id)) {
- _error_log('LiveTransmitionHistory::finishALLOffline ERROR empty live_transmitions_history_id ');
return false;
}
- _error_log('LiveTransmitionHistory::finishALLOffline finishing $live_transmitions_history_id '. json_encode(debug_backtrace()));
$sql = "UPDATE " . static::getTableName() . " SET finished = now() WHERE id = {$live_transmitions_history_id} ";
+ $insert_row = sqlDAL::writeSql($sql);
+ $global['mysqli']->commit();
+
+ Live::unfinishAllFromStats();
+ return $insert_row;
+ }
+
+ public static function unfinishFromTransmitionHistoryId($live_transmitions_history_id) {
+ global $global;
+ $live_transmitions_history_id = intval($live_transmitions_history_id);
+ if (empty($live_transmitions_history_id)) {
+ return false;
+ }
+ $sql = "UPDATE " . static::getTableName() . " SET finished = NULL WHERE id = {$live_transmitions_history_id} ";
+
$insert_row = sqlDAL::writeSql($sql);
$global['mysqli']->commit();
return $insert_row;
diff --git a/plugin/Live/Objects/Live_schedule.php b/plugin/Live/Objects/Live_schedule.php
index c813698afade..d3cdf825f7b0 100644
--- a/plugin/Live/Objects/Live_schedule.php
+++ b/plugin/Live/Objects/Live_schedule.php
@@ -433,7 +433,11 @@ public static function keyExists($key)
function getScheduled_password() {
return $this->scheduled_password;
}
-
+
+ function getPassword() {
+ return $this->getScheduled_password();
+ }
+
function setScheduled_password($scheduled_password): void {
$this->scheduled_password = $scheduled_password;
}
diff --git a/plugin/Live/remindMe.json.php b/plugin/Live/remindMe.json.php
new file mode 100644
index 000000000000..24ef90584df7
--- /dev/null
+++ b/plugin/Live/remindMe.json.php
@@ -0,0 +1,38 @@
+minutesEarlier = $_REQUEST['minutesEarlier'];
+$obj->live_schedule_id = $_REQUEST['live_schedule_id'];
+$obj->msg = '';
+$obj->isActive = false;
+
+if ($reminder->error) {
+ forbiddenPage($reminder->msg);
+} else {
+ if ($reminder->deleted) {
+ $obj->msg = __('Reminder deleted');
+ $obj->warning = 1;
+ }else{
+ $obj->msg = __('Reminder added');
+ $obj->isActive = true;
+ }
+}
+
+$obj->response = $reminder;
+$obj->error = false;
+
+die(_json_encode($obj));
diff --git a/plugin/Live/remindMe.php b/plugin/Live/remindMe.php
new file mode 100644
index 000000000000..5c07e044fd84
--- /dev/null
+++ b/plugin/Live/remindMe.php
@@ -0,0 +1,68 @@
+getKey(), $ls->getLive_servers_id());
+?>
+
+
+
+ Remind me
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ getTitle();
+ ?>
+
+
+
+
+
+
+
+
+
+
+
diff --git a/plugin/Live/view/modeYoutubeLive.php b/plugin/Live/view/modeYoutubeLive.php
index 14bbf8876291..90cb686e98b0 100644
--- a/plugin/Live/view/modeYoutubeLive.php
+++ b/plugin/Live/view/modeYoutubeLive.php
@@ -24,9 +24,9 @@
setLiveKey($livet['key'], Live::getLiveServersIdRequest(), @$_REQUEST['live_index']);
Live::checkIfPasswordIsGood($livet['key']);
-if(empty($livet['live_schedule'])){
+if (empty($livet['live_schedule'])) {
$lt = new LiveTransmition($livet['id']);
-}else{
+} else {
$lt = new Live_schedule($livet['id']);
}
@@ -67,8 +67,8 @@
$img = addQueryStringParameter($img, 'live_schedule', intval($_REQUEST['live_schedule']));
global $getLiveKey;
$getLiveKey = ['key' => $ls->getKey(), 'live_servers_id' => intval($ls->getLive_servers_id()), 'live_index' => '', 'cleanKey' => ''];
-
- if(!empty($ls->getUsers_id_company())){
+
+ if (!empty($ls->getUsers_id_company())) {
$user_id = $ls->getUsers_id_company();
//var_dump($user_id);exit;
$u = new User($user_id);
@@ -97,7 +97,7 @@
$modeYoutubeBottomClass1 = "col-sm-12 col-md-12 col-lg-10";
$modeYoutubeBottomClass2 = "hidden ";
}
-
+// to fix the unfinished lives
$liveInfo = Live::getInfo($livet['key'], $livet['live_servers_id']);
?>
@@ -127,6 +127,7 @@
+
-
+
@@ -163,8 +163,7 @@
-
+
@@ -191,17 +190,12 @@
?>
+
+
+
-
-
-
@@ -236,7 +230,6 @@
}
?>
-
diff --git a/plugin/LiveLinks/view/Live.php b/plugin/LiveLinks/view/Live.php
index ae1495c6a029..cf44a67b1dbb 100644
--- a/plugin/LiveLinks/view/Live.php
+++ b/plugin/LiveLinks/view/Live.php
@@ -1,222 +1,246 @@
-getId();
- if ($liveLink->getType() == 'logged_only' && !User::isLogged()) {
- die('Link for logged only');
- }
-
- $uuid = $_GET['link'];
- $t['id'] = $uuid;
- $t['users_id'] = $liveLink->getUsers_id();
- $t['title'] = $liveLink->getTitle();
- $t['link'] = $liveLink->getLink();
- $t['description'] = $liveLink->getDescription();
-
- AVideoPlugin::getModeLiveLink($liveLink->getId());
- $toTime = strtotime($liveLink->getStart_date());
-} else {
- $isLiveLink = uniqid();
- $uuid = $isLiveLink;
- $t = LiveLinks::decodeDinamicVideoLink();
- $toTime = time();
-}
-
-if (empty($t['users_id'])) {
- die('Link not found');
-}
-
-if ($toTime > time()) {
- $message = "{$t['title']} {$t['description']}";
- $image = User::getPhoto($t['users_id']);
- $bgImage = LiveLinks::getImage($t['id']);
- $title = $t['title'];
- countDownPage($toTime, $message, $image, $bgImage, $title);
-}
-
-$u = new User($t['users_id']);
-$user_id = $u->getBdId();
-$subscribe = Subscribe::getButton($user_id);
-$name = $u->getNameIdentificationBd();
-$name = "{$name} " . User::getEmailVerifiedIcon($user_id) . " ";
-
-$video = array();
-$video['creator'] = '';
-$video['type'] = "liveLink";
-$video['title'] = $t['title'];
-$video['description'] = $t['description'];
-$video['users_id'] = $t['users_id'];
-$poster = $img = LiveLinks::getImage($t['id']);
-$imgw = 400;
-$imgh = 255;
-
-if(isAVideoMobileApp()){
- $_GET['embed'] = 1;
-}
-
-if (!empty($_GET['embed'])) {
- $video['videoLink'] = LiveLinks::getSourceLink($t['id']);
- include $global['systemRootPath'] . 'view/videoEmbeded.php';
- return false;
-}
-
-$isCompressed = AVideoPlugin::loadPluginIfEnabled('TheaterButton') && TheaterButton::isCompressed();
-
-$sideAd = getAdsSideRectangle();
-
-$modeYoutubeBottomClass1 = "col-sm-7 col-md-7 col-lg-6";
-$modeYoutubeBottomClass2 = "col-sm-5 col-md-5 col-lg-4 ";
-
-if (isHTMLEmpty($sideAd)) {
- $modeYoutubeBottomClass1 = "col-sm-12 col-md-12 col-lg-10";
- $modeYoutubeBottomClass2 = "hidden ";
-}
-?>
-
-
-
- getPageTitleSeparator() . __("Live Links") . $config->getPageTitleSeparator() . $config->getWebSiteTitle(); ?>
-
-
-
-
-
-
-
-
- - getWebSiteTitle(); ?>" />
- " />
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- getChat($uuid);
- }
- ?>
-
-
-
-
-
-
-
-
-
+getId();
+ if ($liveLink->getType() == 'logged_only' && !User::isLogged()) {
+ die('Link for logged only');
+ }
+
+ $uuid = $_GET['link'];
+ $t['id'] = $uuid;
+ $t['users_id'] = $liveLink->getUsers_id();
+ $t['title'] = $liveLink->getTitle();
+ $t['link'] = $liveLink->getLink();
+ $t['description'] = $liveLink->getDescription();
+
+ AVideoPlugin::getModeLiveLink($liveLink->getId());
+ $toTime = strtotime($liveLink->getStart_date());
+} else {
+ $isLiveLink = uniqid();
+ $uuid = $isLiveLink;
+ $t = LiveLinks::decodeDinamicVideoLink();
+ $toTime = time();
+}
+
+if (empty($t['users_id'])) {
+ die('Link not found');
+}
+
+if ($toTime > time()) {
+ $message = "{$t['title']} {$t['description']}";
+ $image = User::getPhoto($t['users_id']);
+ $bgImage = LiveLinks::getImage($t['id']);
+ $title = $t['title'];
+ countDownPage($toTime, $message, $image, $bgImage, $title);
+}
+
+$u = new User($t['users_id']);
+$user_id = $u->getBdId();
+$subscribe = Subscribe::getButton($user_id);
+$name = $u->getNameIdentificationBd();
+$name = "{$name} " . User::getEmailVerifiedIcon($user_id) . " ";
+
+$video = array();
+$video['creator'] = '';
+$video['type'] = "liveLink";
+$video['title'] = $t['title'];
+$video['description'] = $t['description'];
+$video['users_id'] = $t['users_id'];
+$poster = $img = LiveLinks::getImage($t['id']);
+$imgw = 400;
+$imgh = 255;
+
+if(isAVideoMobileApp()){
+ $_GET['embed'] = 1;
+}
+
+if (!empty($_GET['embed'])) {
+ $video['videoLink'] = LiveLinks::getSourceLink($t['id']);
+ include $global['systemRootPath'] . 'view/videoEmbeded.php';
+ return false;
+}
+
+$isCompressed = AVideoPlugin::loadPluginIfEnabled('TheaterButton') && TheaterButton::isCompressed();
+
+$sideAd = getAdsSideRectangle();
+
+$modeYoutubeBottomClass1 = "col-sm-7 col-md-7 col-lg-6";
+$modeYoutubeBottomClass2 = "col-sm-5 col-md-5 col-lg-4 ";
+
+if (isHTMLEmpty($sideAd)) {
+ $modeYoutubeBottomClass1 = "col-sm-12 col-md-12 col-lg-10";
+ $modeYoutubeBottomClass2 = "hidden ";
+}
+?>
+
+
+
+ getPageTitleSeparator() . __("Live Links") . $config->getPageTitleSeparator() . $config->getWebSiteTitle(); ?>
+
+
+
+
+
+
+
+
+ - getWebSiteTitle(); ?>" />
+ " />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ disableShareAndPlaylist) && empty($advancedCustom->disableShareOnly)) { ?>
+
+
+
+
+
+
+
+
+ disableShareAndPlaylist) && empty($advancedCustom->disableShareOnly)) {
+ $link = LiveLinks::getLinkToLiveFromId($_GET['link']);
+ $linkEmbed = LiveLinks::getLinkToLiveFromId($_GET['link'], true);
+ getShareMenu($t['title'], $link, $link, $linkEmbed, $img, "row");
+ }
+ ?>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ getChat($uuid);
+ }
+ ?>
+
+
+
+
+
+
+
+
+
diff --git a/plugin/Scheduler/Objects/Scheduler_commands.php b/plugin/Scheduler/Objects/Scheduler_commands.php
index e49db95fb1bc..52c6ea81a52d 100644
--- a/plugin/Scheduler/Objects/Scheduler_commands.php
+++ b/plugin/Scheduler/Objects/Scheduler_commands.php
@@ -1,313 +1,324 @@
-$minute,
- 'hour'=>$hour,
- 'day_of_month'=>$day_of_month,
- 'month'=>$month,
- 'day_of_week'=>$day_of_week,
- );
- }
-
- public static function getAllScheduledTORepeat() {
- global $global;
- if (!static::isTableInstalled()) {
- return false;
- }
- $sql = "SELECT * FROM " . static::getTableName() . " WHERE status='" . self::$statusRepeat . "' ";
-
- $times = self::getTimesNow();
-
- $sql .= " AND (repeat_minute IS NULL OR repeat_minute = {$times['minute']}) ";
- $sql .= " AND (repeat_hour IS NULL OR repeat_hour = {$times['hour']}) ";
- $sql .= " AND (repeat_day_of_month IS NULL OR repeat_day_of_month = {$times['day_of_month']}) ";
- $sql .= " AND (repeat_month IS NULL OR repeat_month = {$times['month']}) ";
- $sql .= " AND (repeat_day_of_week IS NULL OR repeat_day_of_week = {$times['day_of_week']}) ";
-
- //echo $sql;exit;
- $res = sqlDAL::readSql($sql);
- $fullData = sqlDAL::fetchAllAssoc($res);
- sqlDAL::close($res);
- $rows = array();
- if ($res != false) {
- foreach ($fullData as $row) {
- $rows[] = $row;
- }
- } else {
- die($sql . '\nError : (' . $global['mysqli']->errno . ') ' . $global['mysqli']->error);
- }
- return $rows;
- }
-
- public static function getAllActiveAndReady() {
- global $global;
- if (!static::isTableInstalled()) {
- return false;
- }
- $sql = "SELECT * FROM " . static::getTableName() . " WHERE status='" . self::$statusActive . "' AND date_to_execute <= now() ";
-
- //echo $sql;
- $res = sqlDAL::readSql($sql);
- $fullData = sqlDAL::fetchAllAssoc($res);
- sqlDAL::close($res);
- $rows = array();
- if ($res != false) {
- foreach ($fullData as $row) {
- $rows[] = $row;
- }
- } else {
- die($sql . '\nError : (' . $global['mysqli']->errno . ') ' . $global['mysqli']->error);
- }
- return $rows;
- }
-
- function setId($id) {
- $this->id = intval($id);
- }
-
- function setCallbackURL($callbackURL) {
- $this->callbackURL = $callbackURL;
- }
-
- function setParameters($parameters) {
- $this->parameters = $parameters;
- }
-
- function setDate_to_execute($date_to_execute) {
- if (is_numeric($date_to_execute)) {
- $date_to_execute = date('Y-m-d H:i:s', $date_to_execute);
- }
- $this->date_to_execute = $date_to_execute;
- }
-
- function setExecuted_in($executed_in) {
- $this->executed_in = $executed_in;
- }
-
- function setStatus($status) {
- $this->status = $status;
- }
-
- function getId() {
- return intval($this->id);
- }
-
- function getCallbackURL() {
- return $this->callbackURL;
- }
-
- function getParameters() {
- return $this->parameters;
- }
-
- function getDate_to_execute() {
- return $this->date_to_execute;
- }
-
- function getExecuted_in() {
- return $this->executed_in;
- }
-
- function getStatus() {
- return $this->status;
- }
-
- function getCallbackResponse() {
- return $this->callbackResponse;
- }
-
- function setCallbackResponse($callbackResponse) {
- $this->callbackResponse = $callbackResponse;
- }
-
- function setExecuted($callbackResponse) {
- if (!is_string($callbackResponse)) {
- $callbackResponse = json_encode($callbackResponse);
- }
- $this->setExecuted_in(date('Y-m-d H:i:s'));
- $this->setCallbackResponse($callbackResponse);
-
- if ($this->status !== self::$statusRepeat) {
- $this->setStatus(self::$statusExecuted);
- }
- return $this->save();
- }
-
- function getTimezone() {
- return $this->timezone;
- }
-
- private function _setTimezone($timezone) {
- $this->timezone = $timezone;
- }
-
- public function save() {
- if (empty($this->date_to_execute)) {
- $this->date_to_execute = 'NULL';
- }
- if (empty($this->executed_in)) {
- $this->executed_in = 'NULL';
- }
- if (empty($this->type)) {
- $this->type = 'NULL';
- }
- if (!isset($this->repeat_minute)) {
- $this->repeat_minute = 'NULL';
- }
- if (!isset($this->repeat_hour)) {
- $this->repeat_hour = 'NULL';
- }
- if (!isset($this->repeat_day_of_month)) {
- $this->repeat_day_of_month = 'NULL';
- }
- if (!isset($this->repeat_month)) {
- $this->repeat_month = 'NULL';
- }
- if (!isset($this->repeat_day_of_week)) {
- $this->repeat_day_of_week = 'NULL';
- }
- if (empty($this->status)) {
- $this->status = self::$statusActive;
- }
- if (empty($this->callbackURL)) {
- $this->callbackURL = '';
- }
-
- $this->_setTimeZone(date_default_timezone_get());
-
- return parent::save();
- }
-
- function getRepeat_minute() {
- return $this->repeat_minute;
- }
-
- function getRepeat_hour() {
- return $this->repeat_hour;
- }
-
- function getRepeat_day_of_month() {
- return $this->repeat_day_of_month;
- }
-
- function getRepeat_month() {
- return $this->repeat_month;
- }
-
- function setRepeat_minute($repeat_minute) {
- $this->repeat_minute = intval($repeat_minute);
- }
-
- function setRepeat_hour($repeat_hour) {
- $this->repeat_hour = intval($repeat_hour);
- }
-
- function setRepeat_day_of_month($repeat_day_of_month) {
- $this->repeat_day_of_month = intval($repeat_day_of_month);
- }
-
- function setRepeat_month($repeat_month) {
- $this->repeat_month = intval($repeat_month);
- }
-
- function getType() {
- return $this->type;
- }
-
- function setType($type) {
- $this->type = $type;
- }
-
- function getRepeat_day_of_week() {
- return $this->repeat_day_of_week;
- }
-
- function setRepeat_day_of_week($repeat_day_of_week) {
- $this->repeat_day_of_week = $repeat_day_of_week;
- }
-
- public static function deleteFromType($type) {
- global $global;
- if (!empty($type)) {
- $sql = "DELETE FROM " . static::getTableName() . " ";
- $sql .= " WHERE type = ?";
- $global['lastQuery'] = $sql;
- return sqlDAL::writeSql($sql, "s", array($type));
- }
- return false;
- }
-
- public static function getAllFromType($type) {
- global $global;
- if (!static::isTableInstalled()) {
- return false;
- }
- $sql = "SELECT * FROM " . static::getTableName() . " WHERE type=? ";
-
- //echo $sql;
- $res = sqlDAL::readSql($sql, 's', array($type));
- $fullData = sqlDAL::fetchAllAssoc($res);
- sqlDAL::close($res);
- $rows = array();
- if ($res != false) {
- foreach ($fullData as $row) {
- $rows[] = $row;
- }
- } else {
- die($sql . '\nError : (' . $global['mysqli']->errno . ') ' . $global['mysqli']->error);
- }
- return $rows;
- }
-
- public static function getAllActiveOrToRepeat() {
- global $global;
- if (!static::isTableInstalled()) {
- return false;
- }
- $sql = "SELECT * FROM " . static::getTableName() . " WHERE status='" . (self::$statusActive) . "' OR status='" . (self::$statusRepeat) . "' ";
-
- $sql .= self::getSqlFromPost();
- $res = sqlDAL::readSql($sql);
- $fullData = sqlDAL::fetchAllAssoc($res);
- sqlDAL::close($res);
- $rows = array();
- if ($res != false) {
- foreach ($fullData as $row) {
- $rows[] = $row;
- }
- } else {
- die($sql . '\nError : (' . $global['mysqli']->errno . ') ' . $global['mysqli']->error);
- }
- return $rows;
- }
-
-}
+$minute,
+ 'hour'=>$hour,
+ 'day_of_month'=>$day_of_month,
+ 'month'=>$month,
+ 'day_of_week'=>$day_of_week,
+ );
+ }
+
+ public static function getAllScheduledTORepeat() {
+ global $global;
+ if (!static::isTableInstalled()) {
+ return false;
+ }
+ $sql = "SELECT * FROM " . static::getTableName() . " WHERE status='" . self::$statusRepeat . "' ";
+
+ $times = self::getTimesNow();
+
+ $sql .= " AND (repeat_minute IS NULL OR repeat_minute = {$times['minute']}) ";
+ $sql .= " AND (repeat_hour IS NULL OR repeat_hour = {$times['hour']}) ";
+ $sql .= " AND (repeat_day_of_month IS NULL OR repeat_day_of_month = {$times['day_of_month']}) ";
+ $sql .= " AND (repeat_month IS NULL OR repeat_month = {$times['month']}) ";
+ $sql .= " AND (repeat_day_of_week IS NULL OR repeat_day_of_week = {$times['day_of_week']}) ";
+
+ //echo $sql;exit;
+ $res = sqlDAL::readSql($sql);
+ $fullData = sqlDAL::fetchAllAssoc($res);
+ sqlDAL::close($res);
+ $rows = array();
+ if ($res != false) {
+ foreach ($fullData as $row) {
+ $rows[] = $row;
+ }
+ } else {
+ die($sql . '\nError : (' . $global['mysqli']->errno . ') ' . $global['mysqli']->error);
+ }
+ return $rows;
+ }
+
+ public static function getAllActiveAndReady() {
+ global $global;
+ if (!static::isTableInstalled()) {
+ return false;
+ }
+ $sql = "SELECT * FROM " . static::getTableName() . " WHERE status='" . self::$statusActive . "' AND date_to_execute <= now() ";
+
+ //echo $sql;
+ $res = sqlDAL::readSql($sql);
+ $fullData = sqlDAL::fetchAllAssoc($res);
+ sqlDAL::close($res);
+ $rows = array();
+ if ($res != false) {
+ foreach ($fullData as $row) {
+ $rows[] = $row;
+ }
+ } else {
+ die($sql . '\nError : (' . $global['mysqli']->errno . ') ' . $global['mysqli']->error);
+ }
+ return $rows;
+ }
+
+ function setId($id) {
+ $this->id = intval($id);
+ }
+
+ function setCallbackURL($callbackURL) {
+ $this->callbackURL = $callbackURL;
+ }
+
+ function setParameters($parameters) {
+ global $global;
+ if(!is_string($parameters)){
+ $parameters = _json_encode($parameters);
+ $parameters = $global['mysqli']->real_escape_string($parameters);
+ }
+
+ $this->parameters = $parameters;
+ }
+
+ function setDate_to_execute($date_to_execute) {
+ if (is_numeric($date_to_execute)) {
+ $date_to_execute = date('Y-m-d H:i:s', $date_to_execute);
+ }
+ $this->date_to_execute = $date_to_execute;
+ }
+
+ function setExecuted_in($executed_in) {
+ $this->executed_in = $executed_in;
+ }
+
+ function setStatus($status) {
+ $this->status = $status;
+ }
+
+ function getId() {
+ return intval($this->id);
+ }
+
+ function getCallbackURL() {
+ return $this->callbackURL;
+ }
+
+ function getParameters() {
+ return $this->parameters;
+ }
+
+ function getDate_to_execute() {
+ return $this->date_to_execute;
+ }
+
+ function getExecuted_in() {
+ return $this->executed_in;
+ }
+
+ function getStatus() {
+ return $this->status;
+ }
+
+ function getCallbackResponse() {
+ return $this->callbackResponse;
+ }
+
+ function setCallbackResponse($callbackResponse) {
+ $this->callbackResponse = $callbackResponse;
+ }
+
+ function setExecuted($callbackResponse) {
+ if (!is_string($callbackResponse)) {
+ $callbackResponse = json_encode($callbackResponse);
+ $callbackResponse = $global['mysqli']->real_escape_string($callbackResponse);
+ }
+ $this->setExecuted_in(date('Y-m-d H:i:s'));
+ $this->setCallbackResponse($callbackResponse);
+
+ if ($this->status !== self::$statusRepeat) {
+ $this->setStatus(self::$statusExecuted);
+ }
+ return $this->save();
+ }
+
+ function getTimezone() {
+ return $this->timezone;
+ }
+
+ private function _setTimezone($timezone) {
+ $this->timezone = $timezone;
+ }
+
+ public function save() {
+ if (empty($this->date_to_execute)) {
+ $this->date_to_execute = 'NULL';
+ }
+ if (empty($this->executed_in)) {
+ $this->executed_in = 'NULL';
+ }
+ if (empty($this->type)) {
+ $this->type = 'NULL';
+ }
+ if (!isset($this->repeat_minute)) {
+ $this->repeat_minute = 'NULL';
+ }
+ if (!isset($this->repeat_hour)) {
+ $this->repeat_hour = 'NULL';
+ }
+ if (!isset($this->repeat_day_of_month)) {
+ $this->repeat_day_of_month = 'NULL';
+ }
+ if (!isset($this->repeat_month)) {
+ $this->repeat_month = 'NULL';
+ }
+ if (!isset($this->repeat_day_of_week)) {
+ $this->repeat_day_of_week = 'NULL';
+ }
+ if (empty($this->status)) {
+ $this->status = self::$statusActive;
+ }
+ if (empty($this->callbackURL)) {
+ $this->callbackURL = '';
+ }
+
+ $this->_setTimeZone(date_default_timezone_get());
+
+ return parent::save();
+ }
+
+ function getRepeat_minute() {
+ return $this->repeat_minute;
+ }
+
+ function getRepeat_hour() {
+ return $this->repeat_hour;
+ }
+
+ function getRepeat_day_of_month() {
+ return $this->repeat_day_of_month;
+ }
+
+ function getRepeat_month() {
+ return $this->repeat_month;
+ }
+
+ function setRepeat_minute($repeat_minute) {
+ $this->repeat_minute = intval($repeat_minute);
+ }
+
+ function setRepeat_hour($repeat_hour) {
+ $this->repeat_hour = intval($repeat_hour);
+ }
+
+ function setRepeat_day_of_month($repeat_day_of_month) {
+ $this->repeat_day_of_month = intval($repeat_day_of_month);
+ }
+
+ function setRepeat_month($repeat_month) {
+ $this->repeat_month = intval($repeat_month);
+ }
+
+ function getType() {
+ return $this->type;
+ }
+
+ function setType($type) {
+ $this->type = $type;
+ }
+
+ function getRepeat_day_of_week() {
+ return $this->repeat_day_of_week;
+ }
+
+ function setRepeat_day_of_week($repeat_day_of_week) {
+ $this->repeat_day_of_week = $repeat_day_of_week;
+ }
+
+ public static function deleteFromType($type) {
+ global $global;
+ if (!empty($type)) {
+ $sql = "DELETE FROM " . static::getTableName() . " ";
+ $sql .= " WHERE type = ?";
+ $global['lastQuery'] = $sql;
+ return sqlDAL::writeSql($sql, "s", array($type));
+ }
+ return false;
+ }
+
+ public static function getAllFromType($type) {
+ global $global;
+ if (!static::isTableInstalled()) {
+ return false;
+ }
+ $sql = "SELECT * FROM " . static::getTableName() . " WHERE type=? ";
+
+ //echo $sql;
+ $res = sqlDAL::readSql($sql, 's', array($type));
+ $fullData = sqlDAL::fetchAllAssoc($res);
+ sqlDAL::close($res);
+ $rows = array();
+ if ($res != false) {
+ foreach ($fullData as $row) {
+ $rows[] = $row;
+ }
+ } else {
+ die($sql . '\nError : (' . $global['mysqli']->errno . ') ' . $global['mysqli']->error);
+ }
+ return $rows;
+ }
+
+ public static function getAllActiveOrToRepeat($type='') {
+ global $global;
+ if (!static::isTableInstalled()) {
+ return false;
+ }
+ $sql = "SELECT * FROM " . static::getTableName() . " WHERE (status='" . (self::$statusActive) . "' OR status='" . (self::$statusRepeat) . "') ";
+
+ if(!empty($type)){
+ $sql .= ' AND `type` LIKE "'.$type.'%" ';
+ }
+
+ $sql .= self::getSqlFromPost();
+ $res = sqlDAL::readSql($sql);
+ $fullData = sqlDAL::fetchAllAssoc($res);
+ sqlDAL::close($res);
+ $rows = array();
+ if ($res != false) {
+ foreach ($fullData as $row) {
+ $rows[] = $row;
+ }
+ } else {
+ die($sql . '\nError : (' . $global['mysqli']->errno . ') ' . $global['mysqli']->error);
+ }
+ return $rows;
+ }
+
+}
diff --git a/plugin/Scheduler/Scheduler.php b/plugin/Scheduler/Scheduler.php
index fc0b10bbc36f..b81a3e17009a 100644
--- a/plugin/Scheduler/Scheduler.php
+++ b/plugin/Scheduler/Scheduler.php
@@ -1,113 +1,245 @@
-Crontab every 1 minute* * * * * php {$global['systemRootPath']}plugin/Scheduler/run.php
";
- //$desc .= $this->isReadyLabel(array('YPTWallet'));
- return $desc;
- }
-
- public function getName() {
- return "Scheduler";
- }
-
- public function getUUID() {
- return "Scheduler-5ee8405eaaa16";
- }
-
- public function getPluginVersion() {
- return "3.0";
- }
-
- public function updateScript() {
- global $global;
- if (AVideoPlugin::compareVersion($this->getName(), "2.0") < 0) {
- $sqls = file_get_contents($global['systemRootPath'] . 'plugin/Scheduler/install/updateV2.0.sql');
- $sqlParts = explode(";", $sqls);
- foreach ($sqlParts as $value) {
- sqlDal::writeSql(trim($value));
- }
- }
- if (AVideoPlugin::compareVersion($this->getName(), "3.0") < 0) {
- $sqls = file_get_contents($global['systemRootPath'] . 'plugin/Scheduler/install/updateV3.0.sql');
- $sqlParts = explode(";", $sqls);
- foreach ($sqlParts as $value) {
- sqlDal::writeSql(trim($value));
- }
- }
- return true;
- }
- public function getEmptyDataObject() {
- $obj = new stdClass();
- /*
- $obj->textSample = "text";
- $obj->checkboxSample = true;
- $obj->numberSample = 5;
-
- $o = new stdClass();
- $o->type = array(0=>__("Default"))+array(1,2,3);
- $o->value = 0;
- $obj->selectBoxSample = $o;
-
- $o = new stdClass();
- $o->type = "textarea";
- $o->value = "";
- $obj->textareaSample = $o;
- */
- return $obj;
- }
-
-
- public function getPluginMenu() {
- global $global;
- $btn = ' Edit ';
- $btn .= ' Run now ';
- return $btn;
- }
-
- static public function run($scheduler_commands_id){
- global $_executeSchelude;
- if(!isset($_executeSchelude)){
- $_executeSchelude = array();
- }
- $e = new Scheduler_commands($scheduler_commands_id);
- $callBackURL = $e->getCallbackURL();
- if(!isValidURL($callBackURL)){
- return false;
- }
- if(empty($_executeSchelude[$callBackURL])){
- $callBackURL = addQueryStringParameter($callBackURL, 'token', getToken(60));
- _error_log("Scheduler::run getting callback URL {$callBackURL}");
- $_executeSchelude[$callBackURL] = url_get_contents($callBackURL);
- _error_log("Scheduler::run got callback ". json_encode($_executeSchelude[$callBackURL]));
- }
- if(!empty($_executeSchelude[$callBackURL])){
- return $e->setExecuted($_executeSchelude[$callBackURL]);
- }
- return false;
- }
-
-
- static public function add($date_to_execute, $callbackURL){
- _error_log("Scheduler::add [$date_to_execute] [$callbackURL]");
- if(empty($date_to_execute)){
- _error_log("Scheduler::add ERROR date_to_execute is empty");
- return false;
- }
- if(empty($callbackURL)){
- _error_log("Scheduler::add ERROR callbackURL is empty");
- return false;
- }
- $e = new Scheduler_commands(0);
- $e->setDate_to_execute($date_to_execute);
- $e->setCallbackURL($callbackURL);
- return $e->save();
- }
-}
+";
+ $desc .= "To use the Scheduler Plugin, you MUST add it on your crontab";
+ $desc .= "";
+ $desc .= " Open a terminal and type crontab -e
than add a crontab for every 1 minute* * * * * php {$global['systemRootPath']}plugin/Scheduler/run.php
";
+ }
+ //$desc .= $this->isReadyLabel(array('YPTWallet'));
+ return $desc;
+ }
+
+ public function getName() {
+ return "Scheduler";
+ }
+
+ public function getUUID() {
+ return "Scheduler-5ee8405eaaa16";
+ }
+
+ public function getPluginVersion() {
+ return "3.0";
+ }
+
+ public function updateScript() {
+ global $global;
+ if (AVideoPlugin::compareVersion($this->getName(), "2.0") < 0) {
+ $sqls = file_get_contents($global['systemRootPath'] . 'plugin/Scheduler/install/updateV2.0.sql');
+ $sqlParts = explode(";", $sqls);
+ foreach ($sqlParts as $value) {
+ sqlDal::writeSql(trim($value));
+ }
+ }
+ if (AVideoPlugin::compareVersion($this->getName(), "3.0") < 0) {
+ $sqls = file_get_contents($global['systemRootPath'] . 'plugin/Scheduler/install/updateV3.0.sql');
+ $sqlParts = explode(";", $sqls);
+ foreach ($sqlParts as $value) {
+ sqlDal::writeSql(trim($value));
+ }
+ }
+ return true;
+ }
+
+ public function getEmptyDataObject() {
+ $obj = new stdClass();
+ /*
+ $obj->textSample = "text";
+ $obj->checkboxSample = true;
+ $obj->numberSample = 5;
+
+ $o = new stdClass();
+ $o->type = array(0=>__("Default"))+array(1,2,3);
+ $o->value = 0;
+ $obj->selectBoxSample = $o;
+
+ $o = new stdClass();
+ $o->type = "textarea";
+ $o->value = "";
+ $obj->textareaSample = $o;
+ */
+ return $obj;
+ }
+
+ public function getPluginMenu() {
+ global $global;
+ $btn = ' Edit ';
+ $btn .= ' Run now ';
+ return $btn;
+ }
+
+ static public function run($scheduler_commands_id) {
+ global $_executeSchelude, $global;
+ if (!isset($_executeSchelude)) {
+ $_executeSchelude = array();
+ }
+ $e = new Scheduler_commands($scheduler_commands_id);
+ $callBackURL = $e->getCallbackURL();
+ $callBackURL = str_replace('{webSiteRootURL}', $global['webSiteRootURL'], $callBackURL);
+ if (!isValidURL($callBackURL)) {
+ return false;
+ }
+ if (empty($_executeSchelude[$callBackURL])) {
+ $callBackURL = addQueryStringParameter($callBackURL, 'token', getToken(60));
+ $callBackURL = addQueryStringParameter($callBackURL, 'scheduler_commands_id', $scheduler_commands_id);
+ _error_log("Scheduler::run getting callback URL {$callBackURL}");
+ $_executeSchelude[$callBackURL] = url_get_contents($callBackURL, '', 30);
+ _error_log("Scheduler::run got callback " . json_encode($_executeSchelude[$callBackURL]));
+ $json = _json_decode($_executeSchelude[$callBackURL]);
+ if (is_object($json) && !empty($json->error)) {
+ _error_log("Scheduler::run callback ERROR " . json_encode($json));
+ return false;
+ }
+ }
+ if (!empty($_executeSchelude[$callBackURL])) {
+ return $e->setExecuted($_executeSchelude[$callBackURL]);
+ }
+ return false;
+ }
+
+ static public function add($date_to_execute, $callbackURL, $parameters = '', $type = '') {
+ _error_log("Scheduler::add [$date_to_execute] [$callbackURL]");
+ if (empty($date_to_execute)) {
+ _error_log("Scheduler::add ERROR date_to_execute is empty");
+ return false;
+ }
+
+ $date_to_execute_time = _strtotime($date_to_execute);
+
+ if ($date_to_execute_time <= time()) {
+ _error_log("Scheduler::add ERROR date_to_execute must be greater than now [{$date_to_execute}] " . date('Y/m/d H:i:s', $date_to_execute_time) . ' ' . date('Y/m/d H:i:s'));
+ return false;
+ }
+
+ if (empty($callbackURL)) {
+ _error_log("Scheduler::add ERROR callbackURL is empty");
+ return false;
+ }
+ $e = new Scheduler_commands(0);
+ $e->setDate_to_execute($date_to_execute);
+ $e->setCallbackURL($callbackURL);
+ if (!empty($parameters)) {
+ $e->setParameters($parameters);
+ }
+ if (!empty($type)) {
+ $e->setType($type);
+ }
+ return $e->save();
+ }
+
+ static public function addSendEmail($date_to_execute, $emailTo, $emailSubject, $emailEmailBody, $emailFrom = '', $emailFromName = '', $type = '') {
+ global $global;
+ $parameters = array(
+ 'emailSubject' => $emailSubject,
+ 'emailEmailBody' => $emailEmailBody,
+ 'emailTo' => $emailTo,
+ 'emailFrom' => $emailFrom,
+ 'emailFromName' => $emailFromName,
+ );
+ //var_dump($parameters);exit;
+ $url = "{webSiteRootURL}plugin/Scheduler/sendEmail.json.php";
+
+ if (empty($type)) {
+ $type = 'SendEmail';
+ }
+
+ $scheduler_commands_id = Scheduler::add($date_to_execute, $url, $parameters, $type);
+ return $scheduler_commands_id;
+ }
+
+ static public function getReminderOptions($destinationURL, $title, $date_start, $selectedEarlierOptions = array(), $date_end = '', $joinURL='', $description='',$earlierOptions = array(
+ '10 minutes earlier' => 10,
+ '30 minutes earlier' => 30,
+ '1 hour earlier' => 60,
+ '2 hours earlier' => 120,
+ '1 day earlier' => 1440,
+ '2 days earlier' => 2880,
+ '1 week earlier' => 10080
+ )
+ ) {
+ global $global;
+ $varsArray = array(
+ 'destinationURL' => $destinationURL,
+ 'title' => $title,
+ 'date_start' => $date_start,
+ 'selectedEarlierOptions' => $selectedEarlierOptions,
+ 'date_end' => $date_end,
+ 'joinURL' => $joinURL,
+ 'description' => $description,
+ 'earlierOptions' => $earlierOptions);
+ $filePath = "{$global['systemRootPath']}plugin/Scheduler/reminderOptions.php";
+ return getIncludeFileContent($filePath, $varsArray);
+ }
+
+ /**
+ *
+ * @global type $global
+ * @param type $title
+ * @param type $description
+ * @param type $date_start
+ * @param type $date_end
+ *
+ * description - string description of the event.
+ dtend - date/time stamp designating the end of the event. You can use either a DateTime object or a PHP datetime format string (e.g. "now + 1 hour").
+ dtstart - date/time stamp designating the start of the event. You can use either a DateTime object or a PHP datetime format string (e.g. "now + 1 hour").
+ location - string address or description of the location of the event.
+ summary - string short summary of the event - usually used as the title.
+ url - string url to attach to the the event. Make sure to add the protocol (http:// or https://).
+ */
+ static public function downloadICS($title, $date_start, $date_end = '', $reminderInMinutes='', $joinURL='', $description='') {
+ global $global,$config;
+ //var_dump(date_default_timezone_get());exit;
+ header('Content-Type: text/calendar; charset=utf-8');
+ header('Content-Disposition: attachment; filename=invite.ics');
+
+ $location = $config->getWebSiteTitle();
+ if(!isValidURL($joinURL)){
+ $joinURL = $global['webSiteRootURL'];
+ }
+
+ if(empty($description)){
+ $description = $location;
+ }
+
+ $date_start = _strtotime($date_start);
+ $date_end = _strtotime($date_end);
+
+ if(empty($date_end) || $date_end <= $date_start){
+ $date_end = strtotime(date('Y/m/d H:i:s', $date_start).' + 1 hour');
+ }
+ $dtstart = date('Y/m/d H:i:s', $date_start);
+ $dtend = date('Y/m/d H:i:s', $date_end);
+ $reminderInMinutes = intval($reminderInMinutes);
+ if(!empty($reminderInMinutes)){
+ $VALARM = "-P{$reminderInMinutes}M";
+ }else{
+ $VALARM = '';
+ }
+
+ $props = array(
+ 'location' => $location,
+ 'description' => $description,
+ 'dtstart' => $dtstart,
+ 'dtend' => $dtend,
+ 'summary' => $title,
+ 'url' => $joinURL,
+ 'valarm' => $VALARM,
+ //'X-WR-TIMEZONE' => date_default_timezone_get()
+ );
+ $ics = new ICS($props);
+ //var_dump($props);
+ echo $ics->to_string();
+ }
+
+}
diff --git a/plugin/Scheduler/downloadICS.php b/plugin/Scheduler/downloadICS.php
new file mode 100644
index 000000000000..2b899c3fdd32
--- /dev/null
+++ b/plugin/Scheduler/downloadICS.php
@@ -0,0 +1,17 @@
+
+
+
\ No newline at end of file
diff --git a/plugin/Scheduler/sendEmail.json.php b/plugin/Scheduler/sendEmail.json.php
new file mode 100644
index 000000000000..fca94352687f
--- /dev/null
+++ b/plugin/Scheduler/sendEmail.json.php
@@ -0,0 +1,74 @@
+getParameters());
+//echo $e->getParameters();
+//var_dump($parameters, $e->getParameters(), json_last_error_msg());exit;
+if(empty($parameters)){
+ forbiddenPage('paramenters is empty');
+}
+
+$parameters = object_to_array($parameters);
+
+if(empty($parameters['emailTo'])){
+ forbiddenPage('emailTo is empty');
+}
+
+$parameters['emailTo'] = is_email($parameters['emailTo']);
+if (empty($parameters['emailTo'])) {
+ forbiddenPage('emailTo is invalid');
+}
+
+if(emptyHTML($parameters['emailEmailBody'])){
+ forbiddenPage('emailEmailBody is empty');
+}
+
+if(is_numeric($parameters['emailFrom'])){
+ $parameters['emailFromName'] = User::getNameIdentificationById($parameters['emailFrom']);;
+ $parameters['emailFrom'] = User::getEmailDb($parameters['emailFrom']);
+}
+
+if(empty($parameters['emailFrom']) || !filter_var($parameters['emailFrom'], FILTER_VALIDATE_EMAIL)){
+ $parameters['emailFrom'] = $config->getContactEmail();
+}
+
+if(empty($parameters['emailFromName'])){
+ $parameters['emailFromName'] = '';
+}
+
+if(empty($parameters['emailSubject'])){
+ $parameters['emailSubject'] = $config->getWebSiteTitle();
+}
+
+
+$obj = new stdClass();
+$obj->msg = '';
+$obj->parameters = $parameters;
+$obj->error = !sendSiteEmail($parameters['emailTo'], $parameters['emailSubject'], $parameters['emailEmailBody'], $parameters['emailFrom'], $parameters['emailFromName']);
+
+die(_json_encode($obj));
\ No newline at end of file
diff --git a/plugin/YPTSocket/Message.php b/plugin/YPTSocket/Message.php
index 1c1ad6670871..34904c2d6710 100644
--- a/plugin/YPTSocket/Message.php
+++ b/plugin/YPTSocket/Message.php
@@ -2,6 +2,7 @@
namespace Socket;
+use React\EventLoop\Loop;
use Ratchet\MessageComponentInterface;
use Ratchet\ConnectionInterface;
@@ -12,14 +13,20 @@ class Message implements MessageComponentInterface {
protected $clients;
protected $clientsWatchinLive;
+ protected $clientsWatchVideosId;
protected $clientsUsersId;
+ protected $clientsChatRoom;
public function __construct() {
//$this->clients = new \SplObjectStorage;
$this->clients = [];
$this->clientsWatchinLive = [];
$this->clientsWatchVideosId = [];
+ $this->clientsUsersId = [];
+ $this->clientsChatRoom = [];
+ //$this->loop->ad
_log_message("Construct");
+
}
public function onOpen(ConnectionInterface $conn) {
@@ -178,7 +185,7 @@ public function onClose(ConnectionInterface $conn) {
}
if (!empty($client['users_id'])) {
unset($this->clientsUsersId[$client['users_id']]['resourceId'][$conn->resourceId]);
- if(empty($this->clientsUsersId[$client['users_id']]['resourceId'])){
+ if (empty($this->clientsUsersId[$client['users_id']]['resourceId'])) {
unset($this->clientsUsersId[$client['users_id']]);
}
}
@@ -248,7 +255,7 @@ public function onMessage(ConnectionInterface $from, $msg) {
$this->msgToSelfURI($json, $msgObj->send_to_uri_pattern);
} else if (!empty($json['resourceId'])) {
$this->msgToResourceId($json, $json['resourceId']);
- }else if (!empty($json['to_users_id'])) {
+ } else if (!empty($json['to_users_id'])) {
$this->msgToUsers_id($json, $json['to_users_id']);
} else {
$this->msgToAll($from, $json);
@@ -361,12 +368,12 @@ public function msgToUsers_id($msg, $users_id, $type = "") {
}
try {
$count = 0;
- if(!is_array($users_id)){
+ if (!is_array($users_id)) {
$users_id = array($users_id);
}
foreach ($users_id as $user_id) {
$user_id = intval($user_id);
- if(empty($user_id)){
+ if (empty($user_id)) {
continue;
}
if ($this->isUserLive($user_id)) {
@@ -376,13 +383,12 @@ public function msgToUsers_id($msg, $users_id, $type = "") {
}
}
}
-
} catch (Exception $exc) {
echo $exc->getTraceAsString();
var_dump($users_id, $this->clientsUsersId);
}
- _log_message("msgToUsers_id: sent to ($count) clients users_id=". json_encode($users_id));
+ _log_message("msgToUsers_id: sent to ($count) clients users_id=" . json_encode($users_id));
}
public function msgToSelfURI($msg, $pattern, $type = "") {
@@ -572,12 +578,10 @@ private function makeSureIsArray($msg) {
public function getTags() {
return array('free', 'live');
}
-
+
public function isUserLive($users_id) {
return !empty($this->clientsUsersId[$users_id]) && !empty($this->clientsUsersId[$users_id]['resourceId']);
}
-
-
}
diff --git a/plugin/YPTSocket/Message2.php b/plugin/YPTSocket/Message2.php
new file mode 100644
index 000000000000..d5422fea4f8d
--- /dev/null
+++ b/plugin/YPTSocket/Message2.php
@@ -0,0 +1,592 @@
+clients = new \SplObjectStorage;
+ $this->clients = [];
+ $this->clientsWatchinLive = [];
+ $this->clientsWatchVideosId = [];
+ $this->clientsUsersId = [];
+ _log_message("Construct");
+ }
+
+ public function onOpen(ConnectionInterface $conn) {
+ global $onMessageSentTo, $SocketGetTotals;
+ $SocketGetTotals = null;
+ $onMessageSentTo = array();
+ $query = $conn->httpRequest->getUri()->getQuery();
+ parse_str($query, $wsocketGetVars);
+ foreach ($wsocketGetVars as $key => $value) {
+ $wsocketGetVars[$key] = urldecode($value);
+ }
+ if (empty($wsocketGetVars['webSocketToken'])) {
+ _log_message("Empty websocket token ");
+ return false;
+ }
+ $json = getDecryptedInfo($wsocketGetVars['webSocketToken']);
+ if (empty($json)) {
+ _log_message("Invalid websocket token ");
+ return false;
+ }
+ // Store the new connection to send messages to later
+ //$this->clients->attach($conn);
+ $client = array();
+ $client['conn'] = $conn;
+ $client['resourceId'] = $conn->resourceId;
+ $client['users_id'] = $json->from_users_id;
+ $client['isAdmin'] = $json->isAdmin;
+ $client['user_name'] = $json->user_name;
+ $client['browser'] = $json->browser;
+ $client['yptDeviceId'] = $json->yptDeviceId;
+ $client['client'] = deviceIdToObject($json->yptDeviceId);
+ if (!empty($wsocketGetVars['webSocketSelfURI'])) {
+ $client['selfURI'] = $wsocketGetVars['webSocketSelfURI'];
+ } else {
+ $client['selfURI'] = $json->selfURI;
+ }
+ $client['isCommandLine'] = @$wsocketGetVars['isCommandLine'];
+ $client['page_title'] = @utf8_encode(@$wsocketGetVars['page_title']);
+ $client['videos_id'] = $json->videos_id;
+ $client['live_key'] = object_to_array(@$json->live_key);
+ $client['ip'] = $json->ip;
+ $client['location'] = $json->location;
+
+ if (!empty($client['live_key']['key'])) {
+ $this->clientsWatchinLive[$client['live_key']['key']][$client['resourceId']] = $client['users_id'];
+ } else
+ if (!empty($client['live_key']['liveLink'])) {
+ $this->clientsWatchinLive[$client['live_key']['liveLink']][$client['resourceId']] = $client['users_id'];
+ } else
+ if (!empty($client['videos_id'])) {
+ $this->clientsWatchVideosId[$client['videos_id']][$client['resourceId']] = $client['users_id'];
+ }
+ if (!empty($client['users_id'])) {
+
+ if (!isset($this->clientsUsersId[$client['users_id']])) {
+ $this->clientsUsersId[$client['users_id']] = array(
+ "users_id" => $client['users_id'],
+ "isAdmin" => $client['isAdmin'],
+ "user_name" => $client['user_name']
+ );
+ $this->clientsUsersId[$client['users_id']]['resourceId'] = array();
+ }
+
+ if (!in_array($client['resourceId'], $this->clientsUsersId[$client['users_id']]['resourceId'])) {
+ $this->clientsUsersId[$client['users_id']]['resourceId'][$client['resourceId']] = $client['resourceId'];
+ }
+ }
+ _log_message("New connection ($conn->resourceId) {$json->yptDeviceId} {$client['selfURI']} {$client['browser']}");
+
+ $this->clients[$conn->resourceId] = $client;
+ /*
+ if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
+ $limit = 250;
+ } else {
+ $limit = 900;
+ }
+ //$limit = 99999;
+ if(count($this->clients)>$limit){
+ $resourceId = array_key_first($this->clients);
+ _log_message("\e[1;32;40m*** Closing connection {$resourceId} ***\e[0m");
+ //$this->clients[$resourceId]->close();
+ //$this->clients->detach($this->clients[$resourceId]['conn']);
+ $this->clients[$resourceId]['conn']->close();
+ unset($resourceId);
+ }
+ */
+ if ($client['browser'] == \SocketMessageType::TESTING) {
+ _log_message("Test detected and received from ($conn->resourceId) " . PHP_EOL . "\e[1;32;40m*** SUCCESS TEST CONNECION {$json->test_msg} ***\e[0m");
+ $this->msgToResourceId($json, $conn->resourceId, \SocketMessageType::TESTING);
+ } else if ($this->shouldPropagateInfo($client)) {
+ //_log_message("shouldPropagateInfo {$json->yptDeviceId}");
+ $this->msgToAll($conn, array('users_id' => $client['users_id'], 'user_name' => $client['user_name'], 'yptDeviceId' => $client['yptDeviceId']), \SocketMessageType::NEW_CONNECTION, true);
+ } else {
+ //_log_message("NOT shouldPropagateInfo ");
+ }
+ if (!empty($json->videos_id)) {
+ //_log_message("msgToAllSameVideo ");
+ $this->msgToAllSameVideo($json->videos_id, "");
+ } else {
+ //_log_message("NOT msgToAllSameVideo ");
+ }
+ if (!empty($json->live_key)) {
+ //_log_message("msgToAllSameLive ");
+ if (\AVideoPlugin::isEnabledByName('LiveUsers')) {
+ $live_key = object_to_array($json->live_key);
+ if (!empty($live_key['key'])) {
+ \_mysql_connect();
+ $lt = \LiveTransmitionHistory::getLatest($live_key['key']);
+ if (!empty($lt['id'])) {
+ $l = new \LiveTransmitionHistory($lt['id']);
+ $total_viewers = \LiveUsers::getTotalUsers($lt['key'], $lt['live_servers_id']);
+ $max_viewers_sametime = $l->getMax_viewers_sametime();
+ if (!empty($live_key['key'])) {
+ $viewers_now = count($this->clientsWatchinLive[$live_key['key']]);
+ } else if (!empty($live_key['liveLink'])) {
+ $viewers_now = count($this->clientsWatchinLive[$live_key['liveLink']]);
+ }
+ if ($viewers_now > $max_viewers_sametime) {
+ $l->setMax_viewers_sametime($viewers_now);
+ }
+ $l->setTotal_viewers($total_viewers);
+ _log_message("onOpen Connection viewers_now = {$viewers_now} => total_viewers = {$total_viewers}");
+ $l->save();
+ }
+ \_mysql_close();
+ }
+ }
+ $this->msgToAllSameLive($json->live_key, "");
+ } else {
+ //_log_message("NOT msgToAllSameLive ");
+ }
+ }
+
+ public function onClose(ConnectionInterface $conn) {
+ global $onMessageSentTo, $SocketGetTotals;
+ $SocketGetTotals = null;
+ $onMessageSentTo = array();
+
+ unset($getStatsLive);
+ unset($_getStats);
+ // The connection is closed, remove it, as we can no longer send it messages
+ //$this->clients->detach($conn);
+ if (empty($this->clients[$conn->resourceId])) {
+ _log_message("onClose Connection {$conn->resourceId} not found");
+ return false;
+ }
+ $client = $this->clients[$conn->resourceId];
+
+ if (!empty($client['live_key'])) {
+ if (!empty($client['live_key']['key'])) {
+ unset($this->clientsWatchinLive[$client['live_key']['key']][$conn->resourceId]);
+ }
+ if (!empty($client['live_key']['liveLink'])) {
+ unset($this->clientsWatchinLive[$client['live_key']['liveLink']][$conn->resourceId]);
+ }
+ }
+ if (!empty($client['users_id'])) {
+ unset($this->clientsUsersId[$client['users_id']]['resourceId'][$conn->resourceId]);
+ if(empty($this->clientsUsersId[$client['users_id']]['resourceId'])){
+ unset($this->clientsUsersId[$client['users_id']]);
+ }
+ }
+
+ unset($this->clients[$conn->resourceId]);
+ $users_id = $client['users_id'];
+ $videos_id = $client['videos_id'];
+ $live_key = $client['live_key'];
+ if ($this->shouldPropagateInfo($client)) {
+ $this->msgToAll($conn, array('users_id' => $client['users_id']), \SocketMessageType::NEW_DISCONNECTION);
+ //\AVideoPlugin::onUserSocketDisconnect($users_id, $this->clients[$conn->resourceId]);
+ if (!empty($videos_id)) {
+ $this->msgToAllSameVideo($videos_id, "");
+ }
+ if (!empty($live_key)) {
+ $this->msgToAllSameLive($live_key, "");
+ }
+ }
+ _log_message("Connection {$conn->resourceId} has disconnected");
+ }
+
+ public function onMessage(ConnectionInterface $from, $msg) {
+ global $onMessageSentTo, $SocketGetTotals;
+ $SocketGetTotals = null;
+ $onMessageSentTo = array();
+ //_log_message("onMessage: {$msg}");
+ $json = _json_decode($msg);
+ if (empty($json)) {
+ _log_message("onMessage ERROR: JSON is empty ");
+ return false;
+ }
+ if (empty($json->webSocketToken)) {
+ _log_message("onMessage ERROR: webSocketToken is empty ");
+ return false;
+ }
+
+ if (!$msgObj = getDecryptedInfo($json->webSocketToken)) {
+ _log_message("onMessage ERROR: could not decrypt webSocketToken");
+ return false;
+ }
+
+ switch ($json->msg) {
+ case "webSocketToken":
+ if (empty($this->clients[$from->resourceId]['users_id'])) {
+ _log_message("onMessage:webSocketToken");
+ $this->clients[$from->resourceId]['users_id'] = $msgObj->from_users_id;
+ $this->clients[$from->resourceId]['yptDeviceId'] = $msgObj->yptDeviceId;
+ }
+ break;
+ case "getClientsList":
+ if (empty($this->clientsUsersId)) {
+ return false;
+ }
+ //var_dump($this->clientsUsersId);
+ //var_dump($msgObj->from_users_id);
+ //var_dump($json);
+ //var_dump($msgObj);
+ $this->msgToResourceId(array('json' => $this->clientsUsersId, 'callback' => 'loadCallerPanel'), $from->resourceId);
+ break;
+ case \SocketMessageType::TESTING:
+ $this->msgToResourceId($json, $from->resourceId, \SocketMessageType::TESTING);
+ break;
+ default:
+ $this->msgToArray($json);
+ //_log_message("onMessage:msgObj: " . json_encode($json));
+ if (!empty($msgObj->send_to_uri_pattern)) {
+ $this->msgToSelfURI($json, $msgObj->send_to_uri_pattern);
+ } else if (!empty($json['resourceId'])) {
+ $this->msgToResourceId($json, $json['resourceId']);
+ }else if (!empty($json['to_users_id'])) {
+ $this->msgToUsers_id($json, $json['to_users_id']);
+ } else {
+ $this->msgToAll($from, $json);
+ }
+ break;
+ }
+ }
+
+ private function shouldPropagateInfo($client) {
+ if (preg_match('/^unknowDevice.*/', $client['yptDeviceId'])) {
+ return false;
+ }
+ if (!empty($client['isCommandLine'])) {
+ return false;
+ }
+ return true;
+ }
+
+ public function msgToResourceId($msg, $resourceId, $type = "") {
+ global $onMessageSentTo, $SocketDataObj;
+ if (in_array($resourceId, $onMessageSentTo)) {
+ return false;
+ }
+ if (empty($this->clients[$resourceId]) || empty($this->clients[$resourceId]['conn'])) {
+ _log_message("msgToResourceId: we wil NOT send the message to resourceId=({$resourceId}) {$type} because it does not exists anymore");
+ return false;
+ }
+
+ // do not sent duplicated messages
+ $onMessageSentTo[] = $resourceId;
+
+ if (!$this->shouldPropagateInfo($this->clients[$resourceId])) {
+ _log_message("msgToResourceId: we wil NOT send the message to resourceId=({$resourceId}) {$type}");
+ }
+
+ if (!is_array($msg)) {
+ $this->msgToArray($msg);
+ }
+ if (!empty($msg['webSocketToken'])) {
+ unset($msg['webSocketToken']);
+ }
+ if (empty($type)) {
+ $type = \SocketMessageType::DEFAULT_MESSAGE;
+ }
+
+ $videos_id = $this->clients[$resourceId]['videos_id'];
+ $users_id = $this->clients[$resourceId]['users_id'];
+ $live_key = $this->clients[$resourceId]['live_key'];
+
+ $obj = array();
+ $obj['ResourceId'] = $resourceId;
+ $obj['type'] = $type;
+
+ if (isset($msg['callback'])) {
+ $obj['callback'] = $msg['callback'];
+ unset($msg['callback']);
+ } else {
+ $obj['callback'] = "";
+ }
+
+ if (!empty($msg['json'])) {
+ $obj['msg'] = $msg['json'];
+ } else if (!empty($msg['msg'])) {
+ $obj['msg'] = $msg['msg'];
+ } else {
+ $obj['msg'] = $msg;
+ }
+
+ $obj['uniqid'] = uniqid();
+ $obj['users_id'] = $users_id;
+ $obj['videos_id'] = $videos_id;
+ $obj['live_key'] = $live_key;
+ $obj['webSocketServerVersion'] = $SocketDataObj->serverVersion;
+ $obj['isAdmin'] = $this->clients[$resourceId]['isAdmin'];
+
+ $return = $this->getTotals($this->clients[$resourceId]);
+
+ $totals = array(
+ 'webSocketServerVersion' => $SocketDataObj->serverVersion,
+ 'socket_users_id' => $users_id,
+ 'socket_resourceId' => $resourceId,
+ 'total_devices_online' => count($return['users_id']),
+ 'total_users_online' => count($return['devices'])
+ );
+
+ $obj['autoUpdateOnHTML'] = array_merge($totals, $return['class_to_update']);
+
+ $obj['users_uri'] = $return['users_uri'];
+ $obj['resourceId'] = $resourceId;
+ $obj['users_id_online'] = $this->clientsUsersId;
+
+ $msgToSend = json_encode($obj);
+ _log_message("msgToResourceId: resourceId=({$resourceId}) {$type}");
+ $this->clients[$resourceId]['conn']->send($msgToSend);
+ }
+
+ public function onError(ConnectionInterface $conn, \Exception $e) {
+ if (!preg_match('/protocol is shutdown/i', $e->getMessage())) { // this may be the iframe that reloads the page
+ $debug = $this->clients[$conn->resourceId];
+ unset($debug['conn']);
+ var_dump($debug);
+ _log_message("ERROR: ($conn->resourceId) {$e->getMessage()} ", \AVideoLog::$ERROR);
+ }
+ $conn->close();
+ }
+
+ public function msgToUsers_id($msg, $users_id, $type = "") {
+ if (empty($users_id) || empty($this->clientsUsersId)) {
+ return false;
+ }
+ try {
+ $count = 0;
+ if(!is_array($users_id)){
+ $users_id = array($users_id);
+ }
+ foreach ($users_id as $user_id) {
+ $user_id = intval($user_id);
+ if(empty($user_id)){
+ continue;
+ }
+ if ($this->isUserLive($user_id)) {
+ foreach ($this->clientsUsersId[$user_id]['resourceId'] as $resourceId) {
+ $count++;
+ $this->msgToResourceId($msg, $resourceId, $type);
+ }
+ }
+ }
+
+ } catch (Exception $exc) {
+ echo $exc->getTraceAsString();
+ var_dump($users_id, $this->clientsUsersId);
+ }
+
+ _log_message("msgToUsers_id: sent to ($count) clients users_id=". json_encode($users_id));
+ }
+
+ public function msgToSelfURI($msg, $pattern, $type = "") {
+ if (empty($pattern)) {
+ return false;
+ }
+ $count = 0;
+ foreach ($this->clients as $resourceId => $value) {
+ if (empty($value['selfURI'])) {
+ continue;
+ }
+ if (preg_match($pattern, $value['selfURI'])) {
+ $count++;
+ $this->msgToResourceId($msg, $resourceId, $type);
+ }
+ }
+ _log_message("msgToSelfURI: sent to ($count) clients pattern={$pattern} {$type}");
+ }
+
+ public function getTotals($_client) {
+
+ $isAdmin = $_client['isAdmin'];
+ $selfURI = $_client['selfURI'];
+ $videos_id = $_client['videos_id'];
+ $users_id = $_client['users_id'];
+ $live_key = object_to_array($_client['live_key']);
+ global $SocketDataObj, $SocketGetTotals;
+
+ if (!$isAdmin && isset($SocketGetTotals)) {
+ return $SocketGetTotals;
+ }
+
+ $return = array(
+ 'users_id' => array(),
+ 'devices' => array(),
+ 'class_to_update' => array(),
+ 'users_uri' => array()
+ );
+
+ $users_id_array = $devices = $list = array();
+
+ foreach ($this->clients as $key => $client) {
+ if (empty($client['yptDeviceId'])) {
+ continue;
+ _log_message("getTotals: yptDeviceId is empty ");
+ }
+ unset($client['conn']);
+
+ if ($isAdmin) {
+ $index = md5($client['selfURI']);
+ if (!isset($return['users_uri'][$index])) {
+ $return['users_uri'][$index] = array();
+ }
+ if (!isset($return['users_uri'][$index][$client['yptDeviceId']])) {
+ $return['users_uri'][$index][$client['yptDeviceId']] = array();
+ }
+ if (empty($client['users_id'])) {
+ $return['users_uri'][$index][$client['yptDeviceId']][uniqid()] = $client;
+ } else
+ if (!isset($return['users_uri'][$index][$client['yptDeviceId']][$client['users_id']])) {
+ $return['users_uri'][$index][$client['yptDeviceId']][$client['users_id']] = $client;
+ }
+ }
+
+ //total_devices_online
+ if (!in_array($client['yptDeviceId'], $return['devices'])) {
+ $return['devices'][] = $client['yptDeviceId'];
+ }
+ //total_users_online
+ if (!empty($client['users_id']) && !in_array($client['users_id'], $return['users_id'])) {
+ if ($this->shouldPropagateInfo($client)) {
+ $return['users_id'][] = $client['users_id'];
+ }
+ }
+
+ $keyName = "";
+ if (!empty($SocketDataObj->showTotalOnlineUsersPerVideo) && !empty($client['videos_id'])) {
+ $keyName = getSocketVideoClassName($client['videos_id']);
+ } else if (!empty($SocketDataObj->showTotalOnlineUsersPerLive) && !empty($client['live_key']['key'])) {
+ $keyName = getSocketLiveClassName($client['live_key']['key'], $client['live_key']['live_servers_id']);
+ } else if (!empty($SocketDataObj->showTotalOnlineUsersPerLiveLink) && !empty($client['live_key']['liveLink'])) {
+ $keyName = getSocketLiveLinksClassName($client['live_key']['liveLink']);
+ }
+
+ if (!empty($keyName)) {
+ if (!isset($return['class_to_update'][$keyName])) {
+ $return['class_to_update'][$keyName] = 1;
+ } else {
+ $return['class_to_update'][$keyName]++;
+ }
+ }
+ }
+ if (!$isAdmin) {
+ $SocketGetTotals = $return;
+ }
+ return $return;
+ }
+
+ public function msgToDevice_id($msg, $yptDeviceId) {
+ if (empty($yptDeviceId)) {
+ return false;
+ }
+ $count = 0;
+ foreach ($this->clients as $resourceId => $value) {
+ if ($value['yptDeviceId'] == $yptDeviceId) {
+ $count++;
+ $this->msgToResourceId($msg, $resourceId);
+ }
+ }
+ _log_message("msgToDevice_id: sent to ($count) clients yptDeviceId={$yptDeviceId} ");
+ }
+
+ public function msgToAll(ConnectionInterface $from, $msg, $type = "", $includeMe = false) {
+ _log_message("msgToAll FROM ({$from->resourceId}) {$type} Total Clients: " . count($this->clients));
+ foreach ($this->clients as $key => $client) {
+ if (!empty($includeMe) || $from !== $client['conn']) {
+ //_log_message("msgToAll FROM ({$from->resourceId}) TO {$key} {$type}");
+ $this->msgToResourceId($msg, $key, $type);
+ }
+ }
+ }
+
+ public function msgToAllSameVideo($videos_id, $msg) {
+ if (empty($videos_id)) {
+ return false;
+ }
+ if (!is_array($msg)) {
+ $this->msgToArray($msg);
+ }
+ _log_message("msgToAllSameVideo: {$videos_id}");
+ foreach ($this->clients as $key => $client) {
+ if (empty($client['videos_id'])) {
+ continue;
+ }
+ if ($client['videos_id'] == $videos_id) {
+ $this->msgToResourceId($msg, $key, \SocketMessageType::ON_VIDEO_MSG);
+ }
+ }
+ }
+
+ public function msgToAllSameLive($live_key, $msg) {
+ if (empty($live_key)) {
+ return false;
+ }
+ $live_key = object_to_array($live_key);
+ if (!is_array($msg)) {
+ $this->msgToArray($msg);
+ }
+ _mysql_connect();
+ $msg['is_live'] = \Live::isLiveAndIsReadyFromKey($live_key['key'], $live_key['live_servers_id'], true);
+ _mysql_close();
+ _log_message("msgToAllSameLive: key={$live_key['key']} live_servers_id={$live_key['live_servers_id']} liveLink={$live_key['liveLink']}");
+ foreach ($this->clients as $key => $client) {
+ if (empty($client['live_key']) || (empty($client['live_key']['key']) && empty($client['live_key']['liveLink']))) {
+ continue;
+ }
+ if ($client['live_key']['key'] == $live_key['key'] && $client['live_key']['live_servers_id'] == $live_key['live_servers_id']) {
+ $this->msgToResourceId($msg, $key, \SocketMessageType::ON_LIVE_MSG);
+ } else if ($client['live_key']['liveLink'] == $live_key['liveLink']) {
+ $this->msgToResourceId($msg, $key, \SocketMessageType::ON_LIVE_MSG);
+ }
+ }
+ }
+
+ private function msgToArray(&$json) {
+ $json = $this->makeSureIsArray($json);
+ return true;
+ }
+
+ private function makeSureIsArray($msg) {
+ if (empty($msg)) {
+ return array();
+ }
+ if (is_string($msg)) {
+ $decoded = _json_decode($msg);
+ } else {
+ $decoded = object_to_array($msg);
+ }
+ if (is_string($msg) && !$decoded) {
+ return array($msg);
+ } else if (is_string($msg)) {
+ return object_to_array($decoded);
+ }
+ return object_to_array($msg);
+ }
+
+ public function getTags() {
+ return array('free', 'live');
+ }
+
+ public function isUserLive($users_id) {
+ return !empty($this->clientsUsersId[$users_id]) && !empty($this->clientsUsersId[$users_id]['resourceId']);
+ }
+
+
+
+}
+
+function _log_message($msg, $type = "") {
+ global $SocketDataObj;
+ if (!empty($SocketDataObj->debugAllUsersSocket) || !empty($SocketDataObj->debugSocket)) {
+ //_error_log($msg, \AVideoLog::$SOCKET);
+ echo date('Y-m-d H:i:s') . ' ' . $msg . PHP_EOL;
+ } else if ($type == \AVideoLog::$ERROR) {
+ _error_log($msg, \AVideoLog::$SOCKET);
+ echo "\e[1;31;40m" . date('Y-m-d H:i:s') . ' ' . $msg . "\e[0m" . PHP_EOL;
+ }
+}
diff --git a/plugin/YPTSocket/YPTSocket.php b/plugin/YPTSocket/YPTSocket.php
index 65d5fce6cf64..38a44068db84 100644
--- a/plugin/YPTSocket/YPTSocket.php
+++ b/plugin/YPTSocket/YPTSocket.php
@@ -193,6 +193,7 @@ public function onUserSocketConnect() {
if (!empty($obj->enableCalls)) {
echo 'callerNewConnection(response);';
}
+ echo 'socketNewConnection(response);';
return '';
}
@@ -201,7 +202,38 @@ public function onUserSocketDisconnect() {
if (!empty($obj->enableCalls)) {
echo 'callerDisconnection(response);';
}
+ echo 'socketDisconnection(response);';
return '';
}
+
+ public static function getUserOnlineLabel($users_id, $class='', $style='') {
+ global $global;
+ $users_id = intval($users_id);
+ $varsArray = array('users_id' => $users_id, 'class'=>$class, 'style'=>$style);
+ $filePath = $global['systemRootPath'] . 'plugin/YPTSocket/userOnlineLabel.php';
+ return getIncludeFileContent($filePath, $varsArray);
+ }
+
+
+ public static function shouldShowCaller() {
+ global $_YPTSocketshouldShowCaller;
+ if(!isset($_YPTSocketshouldShowCaller)){
+ $obj = new stdClass();
+ $obj->show = false;
+ $obj->reason = '';
+ if (!User::isLogged()) {
+ $obj->reason = 'Not logged';
+ } else {
+ $objSocket = AVideoPlugin::getDataObjectIfEnabled('YPTSocket');
+ if (empty($objSocket->enableCalls)) {
+ $obj->reason = 'YPTSocket enableCalls = false';
+ }else{
+ $obj->show = true;
+ }
+ }
+ $_YPTSocketshouldShowCaller = $obj;
+ }
+ return $_YPTSocketshouldShowCaller;
+ }
}
diff --git a/plugin/YPTSocket/caller.js b/plugin/YPTSocket/caller.js
index 13752517e149..89756515dc1a 100644
--- a/plugin/YPTSocket/caller.js
+++ b/plugin/YPTSocket/caller.js
@@ -41,6 +41,12 @@ function callNow(to_users_id, to_identification) {
//incomeCall(json);
}
+
+function callUserNow(to_users_id) {
+ avideoModalIframeFull(webSiteRootURL + 'plugin/YPTSocket/callUser.php?users_id='+to_users_id);
+ return false;
+}
+
function isJsonReceivingCall(json) {
if (json.from_users_id != my_users_id) {
// is receiving a call
diff --git a/plugin/YPTSocket/getWebSocket.json.php b/plugin/YPTSocket/getWebSocket.json.php
index a22ee2ff4903..eb6e25cebb5b 100644
--- a/plugin/YPTSocket/getWebSocket.json.php
+++ b/plugin/YPTSocket/getWebSocket.json.php
@@ -1,21 +1,21 @@
-error = true;
-$obj->msg = "";
-$obj->webSocketToken = "";
-$obj->webSocketURL = "";
-
-if(!AVideoPlugin::isEnabledByName("YPTSocket")){
- $obj->msg = "Socket plugin not enabled";
- die(json_encode($obj));
-}
-
-
-$obj->error = false;
-$obj->webSocketToken = getEncryptedInfo(0);
-$obj->webSocketURL = YPTSocket::getWebSocketURL();
-
+error = true;
+$obj->msg = "";
+$obj->webSocketToken = "";
+$obj->webSocketURL = "";
+
+if(!AVideoPlugin::isEnabledByName("YPTSocket")){
+ $obj->msg = "Socket plugin not enabled";
+ die(json_encode($obj));
+}
+
+
+$obj->error = false;
+$obj->webSocketToken = getEncryptedInfo(0);
+$obj->webSocketURL = YPTSocket::getWebSocketURL();
+
die(json_encode($obj));
\ No newline at end of file
diff --git a/plugin/YPTSocket/localhost.pem b/plugin/YPTSocket/localhost.pem
new file mode 100644
index 000000000000..be692792d7da
--- /dev/null
+++ b/plugin/YPTSocket/localhost.pem
@@ -0,0 +1,49 @@
+-----BEGIN CERTIFICATE-----
+MIIDfTCCAmWgAwIBAgIBADANBgkqhkiG9w0BAQUFADBZMRIwEAYDVQQDDAkxMjcu
+MC4wLjExCzAJBgNVBAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQK
+DBhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQwHhcNMTYxMjMwMTQ1OTA2WhcNMjYx
+MjI4MTQ1OTA2WjBZMRIwEAYDVQQDDAkxMjcuMC4wLjExCzAJBgNVBAYTAkFVMRMw
+EQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBXaWRnaXRzIFB0
+eSBMdGQwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC8SZWNS+Ktg0Py
+W8dx5uXZ+ZUawd3wnzLMHW7EhoUpIrIdp3kDU9NezF68dOhPMJY/Kh+6btRCxWXN
+2OVTqS5Xi826j3TSE07iF83JRLeveW0PcodjUBd+RzdwCWWo2pfMJz4v7x1wu1c9
+zNi6JxxpDAXTFSB4GiWsI4tFu2XmMRhfm6LRK4WPfsZIJKokdiG5fKSPDn7nrVj0
+UUXr2eBsEAzdwL14U9+mwbLdaAkz3qK3fqi8sEC09lEWm95gKMOhkQf5qvXODtT4
+wdVrrKDTyehLv0xaItnUDnXzrkMBU5QS9TQzzqSW6ZaBsSxtONEFUiXiN9dtyXsY
+YCUE54G/AgMBAAGjUDBOMB0GA1UdDgQWBBQ2GRz3QsQzdXaTMnPVCKfpigA10DAf
+BgNVHSMEGDAWgBQ2GRz3QsQzdXaTMnPVCKfpigA10DAMBgNVHRMEBTADAQH/MA0G
+CSqGSIb3DQEBBQUAA4IBAQA77iZ4KrpPY18Ezjt0mngYAuAxunKddXYdLZ2khywN
+0uI/VzYnkFVtrsC7y2jLHSxlmE2/viPPGZDUplENV2acN6JNW+tlt7/bsrQHDQw3
+7VCF27EWiDxHsaghhLkqC+kcop5YR5c0oDQTdEWEKSbow2zayUXDYbRRs76SClTe
+824Yul+Ts8Mka+AX2PXDg47iZ84fJRN/nKavcJUTJ2iS1uYw0GNnFMge/uwsfMR3
+V47qN0X5emky8fcq99FlMCbcy0gHAeSWAjClgr2dd2i0LDatUbj7YmdmFcskOgII
+IwGfvuWR2yPevYGAE0QgFeLHniN3RW8zmpnX/XtrJ4a7
+-----END CERTIFICATE-----
+-----BEGIN PRIVATE KEY-----
+MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC8SZWNS+Ktg0Py
+W8dx5uXZ+ZUawd3wnzLMHW7EhoUpIrIdp3kDU9NezF68dOhPMJY/Kh+6btRCxWXN
+2OVTqS5Xi826j3TSE07iF83JRLeveW0PcodjUBd+RzdwCWWo2pfMJz4v7x1wu1c9
+zNi6JxxpDAXTFSB4GiWsI4tFu2XmMRhfm6LRK4WPfsZIJKokdiG5fKSPDn7nrVj0
+UUXr2eBsEAzdwL14U9+mwbLdaAkz3qK3fqi8sEC09lEWm95gKMOhkQf5qvXODtT4
+wdVrrKDTyehLv0xaItnUDnXzrkMBU5QS9TQzzqSW6ZaBsSxtONEFUiXiN9dtyXsY
+YCUE54G/AgMBAAECggEBAKiO/3FE1CMddkCLZVtUp8ShqJgRokx9WI5ecwFApAkV
+ZHsjqDQQYRNmxhDUX/w0tOzLGyhde2xjJyZG29YviKsbHwu6zYwbeOzy/mkGOaK/
+g6DmmMmRs9Z6juifoQCu4GIFZ6il2adIL2vF7OeJh+eKudQj/7NFRSB7mXzNrQWK
+tZY3eux5zXWmio7pgZrx1HFZQiiL9NVLwT9J7oBnaoO3fREiu5J2xBpljG9Cr0j1
+LLiVLhukWJYRlHDtGt1CzI9w8iKo44PCRzpKyxpbsOrQxeSyEWUYQRv9VHA59LC7
+tVAJTbnTX1BNHkGZkOkoOpoZLwBaM2XbbDtcOGCAZMECgYEA+mTURFQ85/pxawvk
+9ndqZ+5He1u/bMLYIJDp0hdB/vgD+vw3gb2UyRwp0I6Wc6Si4FEEnbY7L0pzWsiR
+43CpLs+cyLfnD9NycuIasxs5fKb/1s1nGTkRAp7x9x/ZTtEf8v4YTmmMXFHzdo7V
+pv+czO89ppEDkxEtMf/b5SifhO8CgYEAwIDIUvXLduGhL+RPDwjc2SKdydXGV6om
+OEdt/V8oS801Z7k8l3gHXFm7zL/MpHmh9cag+F9dHK42kw2RSjDGsBlXXiAO1Z0I
+2A34OdPw/kow8fmIKWTMu3+28Kca+3RmUqeyaq0vazQ/bWMO9px+Ud3YfLo1Tn5I
+li0MecAx8DECgYEAvsLceKYYtL83c09fg2oc1ctSCCgw4WJcGAtvJ9DyRZacKbXH
+b/+H/+OF8879zmKqd+0hcCnqUzAMTCisBLPLIM+o6b45ufPkqKObpcJi/JWaKgLY
+vf2c+Psw6o4IF6T5Cz4MNIjzF06UBknxecYZpoPJ20F1kLCwVvxPgfl99l8CgYAb
+XfOcv67WTstgiJ+oroTfJamy+P5ClkDqvVTosW+EHz9ZaJ8xlXHOcj9do2LPey9I
+Rp250azmF+pQS5x9JKQKgv/FtN8HBVUtigbhCb14GUoODICMCfWFLmnumoMefnTR
+iV+3BLn6Dqp5vZxx+NuIffZ5/Or5JsDhALSGVomC8QKBgAi3Z/dNQrDHfkXMNn/L
++EAoLuAbFgLs76r9VGgNaRQ/q5gex2bZEGoBj4Sxvs95NUIcfD9wKT7FF8HdxARv
+y3o6Bfc8Xp9So9SlFXrje+gkdEJ0rQR67d+XBuJZh86bXJHVrMwpoNL+ahLGdVSe
+81oh1uCH1YPLM29hPyaohxL8
+-----END PRIVATE KEY-----
diff --git a/plugin/YPTSocket/script.js b/plugin/YPTSocket/script.js
index abdea27a9139..e176b5beb553 100644
--- a/plugin/YPTSocket/script.js
+++ b/plugin/YPTSocket/script.js
@@ -250,6 +250,38 @@ function parseSocketResponse() {
}
}
+
+function socketNewConnection(json) {
+ setUserOnlineStatus(json.msg.users_id);
+}
+
+function socketDisconnection(json) {
+ setUserOnlineStatus(json.msg.users_id);
+}
+
+function setInitialOnlineStatus() {
+
+ if(!isReadyToCheckIfIsOnline()){
+ setTimeout(function(){setInitialOnlineStatus();},1000);
+ return false;
+ }
+
+ for (var users_id in users_id_online) {
+ setUserOnlineStatus(users_id);
+ }
+ return true;
+}
+
+function setUserOnlineStatus(users_id){
+ if(isUserOnline(users_id)){
+ $('.users_id_'+users_id).removeClass('offline');
+ $('.users_id_'+users_id).addClass('online');
+ }else{
+ $('.users_id_'+users_id).removeClass('online');
+ $('.users_id_'+users_id).addClass('offline');
+ }
+}
+
$(function () {
//console.log('Getting webSocketToken ...');
var getWebSocket = webSiteRootURL + 'plugin/YPTSocket/getWebSocket.json.php';
@@ -275,4 +307,5 @@ $(function () {
if (inIframe()) {
$('#socket_info_container').hide();
}
+ setInitialOnlineStatus();
});
\ No newline at end of file
diff --git a/plugin/YPTSocket/server.php b/plugin/YPTSocket/server.php
index 856de6107328..457ab8b4c1d4 100644
--- a/plugin/YPTSocket/server.php
+++ b/plugin/YPTSocket/server.php
@@ -1,87 +1,84 @@
-serverVersion = YPTSocket::getServerVersion();
-
-ob_end_flush();
-_mysql_close();
-session_write_close();
-exec('ulimit -n 20480'); // to handle over 1 k connections
-$SocketDataObj->port = intval($SocketDataObj->port);
-_error_log("Starting Socket server at port {$SocketDataObj->port}");
-//killProcessOnPort();
-$scheme = parse_url($global['webSiteRootURL'], PHP_URL_SCHEME);
-echo "Starting AVideo Socket server version {$SocketDataObj->serverVersion} on port {$SocketDataObj->port}" . PHP_EOL;
-
-if (strtolower($scheme) !== 'https' || !empty($SocketDataObj->forceNonSecure)) {
- echo "Your socket server does NOT use a secure connection" . PHP_EOL;
- $server = IoServer::factory(
- new HttpServer(
- new WsServer(
- new Message()
- )
- ),
- $SocketDataObj->port
- );
-
- $server->run();
-} else {
- if (!file_exists($SocketDataObj->server_crt_file) || !is_readable($SocketDataObj->server_crt_file)) {
- echo "SSL ERROR, we could not access the CRT file {$SocketDataObj->server_crt_file}, try to run this command as root or use sudo " . PHP_EOL;
- }
- if (!file_exists($SocketDataObj->server_key_file) || !is_readable($SocketDataObj->server_key_file)) {
- echo "SSL ERROR, we could not access the KEY file {$SocketDataObj->server_key_file}, try to run this command as root or use sudo " . PHP_EOL;
- }
-
- echo "Your socket server uses a secure connection" . PHP_EOL;
- $parameters = [
- 'local_cert' => $SocketDataObj->server_crt_file,
- 'local_pk' => $SocketDataObj->server_key_file,
- 'allow_self_signed' => $SocketDataObj->allow_self_signed, // Allow self signed certs (should be false in production)
- 'verify_peer' => false,
- 'verify_peer_name' => false,
- 'security_level' => 0
- ];
-
- foreach ($parameters as $key => $value) {
- echo "Parameter [{$key}]: $value " . PHP_EOL;
- }
-
- $loop = React\EventLoop\Factory::create();
-// Set up our WebSocket server for clients wanting real-time updates
- $webSock = new React\Socket\Server($SocketDataObj->uri . ':' . $SocketDataObj->port, $loop);
- $webSock = new React\Socket\SecureServer($webSock, $loop, $parameters);
- $webServer = new Ratchet\Server\IoServer(
- new HttpServer(
- new WsServer(
- new Message()
- )
- ),
- $webSock
- );
-//$socket = new Reactor($webServer->loop);
-//$socket->listen(8082, '0.0.0.0'); //Port 2
-//$socket->on('connection', [$webServer, 'handleConnect']);
-//$webServer->run();
- $loop->run();
+serverVersion = YPTSocket::getServerVersion();
+
+ob_end_flush();
+_mysql_close();
+session_write_close();
+exec('ulimit -n 20480'); // to handle over 1 k connections
+$SocketDataObj->port = intval($SocketDataObj->port);
+_error_log("Starting Socket server at port {$SocketDataObj->port}");
+
+//killProcessOnPort();
+$scheme = parse_url($global['webSiteRootURL'], PHP_URL_SCHEME);
+echo "Starting AVideo Socket server version {$SocketDataObj->serverVersion} on port {$SocketDataObj->port}" . PHP_EOL;
+
+if (strtolower($scheme) !== 'https' || !empty($SocketDataObj->forceNonSecure)) {
+ echo "Your socket server does NOT use a secure connection" . PHP_EOL;
+ $server = IoServer::factory(
+ new HttpServer(
+ new WsServer(
+ new Message()
+ )
+ ),
+ $SocketDataObj->port
+ );
+
+ $server->run();
+} else {
+ if (!file_exists($SocketDataObj->server_crt_file) || !is_readable($SocketDataObj->server_crt_file)) {
+ echo "SSL ERROR, we could not access the CRT file {$SocketDataObj->server_crt_file}, try to run this command as root or use sudo " . PHP_EOL;
+ }
+ if (!file_exists($SocketDataObj->server_key_file) || !is_readable($SocketDataObj->server_key_file)) {
+ echo "SSL ERROR, we could not access the KEY file {$SocketDataObj->server_key_file}, try to run this command as root or use sudo " . PHP_EOL;
+ }
+
+ echo "Your socket server uses a secure connection" . PHP_EOL;
+ $parameters = [
+ 'local_cert' => $SocketDataObj->server_crt_file,
+ 'local_pk' => $SocketDataObj->server_key_file,
+ 'allow_self_signed' => $SocketDataObj->allow_self_signed, // Allow self signed certs (should be false in production)
+ 'verify_peer' => false,
+ 'verify_peer_name' => false,
+ 'security_level' => 0
+ ];
+
+ foreach ($parameters as $key => $value) {
+ echo "Parameter [{$key}]: $value " . PHP_EOL;
+ }
+
+ $loop = React\EventLoop\Loop::get();
+
+ $webSock = new React\Socket\Server($SocketDataObj->uri . ':' . $SocketDataObj->port, $loop);
+ $webSock = new React\Socket\SecureServer($webSock, $loop, $parameters);
+ $webServer = new Ratchet\Server\IoServer(
+ new HttpServer(
+ new WsServer(
+ new Message()
+ )
+ ),
+ $webSock
+ );
+ $loop->run();
}
\ No newline at end of file
diff --git a/plugin/YPTSocket/server2.php b/plugin/YPTSocket/server2.php
new file mode 100644
index 000000000000..750214c67024
--- /dev/null
+++ b/plugin/YPTSocket/server2.php
@@ -0,0 +1,119 @@
+serverVersion = YPTSocket::getServerVersion();
+
+ob_end_flush();
+_mysql_close();
+session_write_close();
+exec('ulimit -n 20480'); // to handle over 1 k connections
+$SocketDataObj->port = intval($SocketDataObj->port);
+_error_log("Starting Socket server at port {$SocketDataObj->port}");
+//killProcessOnPort();
+$scheme = parse_url($global['webSiteRootURL'], PHP_URL_SCHEME);
+echo "Starting AVideo Socket server version {$SocketDataObj->serverVersion} on port {$SocketDataObj->port}" . PHP_EOL;
+
+if (strtolower($scheme) !== 'https' || !empty($SocketDataObj->forceNonSecure)) {
+ $context = array('tls' => array(
+ 'local_cert' => $global['systemRootPath'] . 'plugin/YPTSocket/localhost.pem',
+ 'allow_self_signed' => true, // Allow self signed certs (should be false in production)
+ 'verify_peer' => false,
+ 'verify_peer_name' => false,
+ 'security_level' => 0
+ ));
+} else {
+ $context = array('tls' => array(
+ 'local_cert' => $SocketDataObj->server_crt_file,
+ 'local_pk' => $SocketDataObj->server_key_file,
+ 'allow_self_signed' => $SocketDataObj->allow_self_signed, // Allow self signed certs (should be false in production)
+ 'verify_peer' => false,
+ 'verify_peer_name' => false,
+ 'security_level' => 0
+ ));
+}
+
+$message = new Message2();
+
+$socket = new React\Socket\SocketServer($SocketDataObj->uri . ':' . $SocketDataObj->port, $context);
+
+$socket = new React\Socket\LimitingServer($socket, null);
+
+$socket->on('connection', function (React\Socket\ConnectionInterface $connection) use ($socket) {
+ echo '[' . $connection->getRemoteAddress() . ' connected] ' . PHP_EOL;
+ $connection->write('hello there!' . PHP_EOL);
+ // whenever a new message comes in
+ $connection->on('data', function ($data) use ($connection, $socket) {
+ // remove any non-word characters (just for the demo)
+ //$data = trim(preg_replace('/[^\w\d \.\,\-\!\?]/u', '', $data));
+
+ $parts = explode('?', $data);
+
+ // ignore empty messages
+ if (empty($parts[1])) {
+ echo ("Empty parts " . json_encode($data));
+ return;
+ }
+
+ parse_str($parts[1], $wsocketGetVars);
+ foreach ($wsocketGetVars as $key => $value) {
+ $wsocketGetVars[$key] = urldecode($value);
+ }
+ if (empty($wsocketGetVars['webSocketToken'])) {
+ echo ("Empty websocket token " . json_encode($wsocketGetVars));
+ return false;
+ }
+ $json = getDecryptedInfo($wsocketGetVars['webSocketToken']);
+ if (empty($json)) {
+ echo ("Invalid websocket token ");
+ return false;
+ }
+ echo 'websocket token [' .
+ json_encode($connection->getLocalAddress()) .
+ ', ' .
+ json_encode($connection->getRemoteAddress()) . ']' . PHP_EOL;
+ //echo ("websocket token ". json_encode($json));
+ // prefix with client IP and broadcast to all connected clients
+ $data = trim(parse_url($connection->getRemoteAddress(), PHP_URL_HOST), '[]') . ': ' . $data . PHP_EOL;
+ foreach ($socket->getConnections() as $connection) {
+ $connection->write($data);
+ }
+ });
+
+ $connection->on('close', function () use ($connection) {
+ echo '[' . $connection->getRemoteAddress() . ' disconnected]' . PHP_EOL;
+ });
+
+ $connection->on('end', function () {
+ echo 'ended'. PHP_EOL;
+ });
+
+ $connection->on('error', function (Exception $e) {
+ echo 'error: ' . $e->getMessage(). PHP_EOL;
+ });
+});
+
+$socket->on('error', function (Exception $e) {
+ echo 'Error: ' . $e->getMessage() . PHP_EOL;
+});
+
+echo 'Listening on ' . $socket->getAddress() . PHP_EOL;
diff --git a/plugin/YPTSocket/userOnlineLabel.php b/plugin/YPTSocket/userOnlineLabel.php
new file mode 100644
index 000000000000..9e64cd939a46
--- /dev/null
+++ b/plugin/YPTSocket/userOnlineLabel.php
@@ -0,0 +1,20 @@
+
+
+
+ show) {
+ ?>
+
+
+
+ reason} -->";
+ }
+ }
+ ?>
+
\ No newline at end of file
diff --git a/view/bootstrap/fixes.css b/view/bootstrap/fixes.css
index 4cfff385d3e0..1726164fa665 100644
--- a/view/bootstrap/fixes.css
+++ b/view/bootstrap/fixes.css
@@ -1,1707 +1,1704 @@
-#mainNavBar {
- display: block;
-}
-body {
- padding-top: 0 !important;
-}
-.hidden {
- display: none;
-}
-@media (max-width: 767px) {
- .hidden-xs {
- display: none !important;
- }
-}
-@media (min-width: 768px) and (max-width: 991px) {
- .hidden-sm {
- display: none !important;
- }
-}
-@media (min-width: 992px) and (max-width: 1199px) {
- .hidden-md {
- display: none !important;
- }
-}
-@media (min-width: 1200px) {
- .hidden-lg {
- display: none !important;
- }
-}
-
-.visible-xs,
-.visible-sm,
-.visible-md,
-.visible-lg {
- display: none !important;
-}
-.visible-xs-block,
-.visible-xs-inline,
-.visible-xs-inline-block,
-.visible-sm-block,
-.visible-sm-inline,
-.visible-sm-inline-block,
-.visible-md-block,
-.visible-md-inline,
-.visible-md-inline-block,
-.visible-lg-block,
-.visible-lg-inline,
-.visible-lg-inline-block {
- display: none !important;
-}
-@media (max-width: 767px) {
- .visible-xs {
- display: block !important;
- }
- table.visible-xs {
- display: table !important;
- }
- tr.visible-xs {
- display: table-row !important;
- }
- th.visible-xs,
- td.visible-xs {
- display: table-cell !important;
- }
-}
-@media (max-width: 767px) {
- .visible-xs-block {
- display: block !important;
- }
-}
-@media (max-width: 767px) {
- .visible-xs-inline {
- display: inline !important;
- }
-}
-@media (max-width: 767px) {
- .visible-xs-inline-block {
- display: inline-block !important;
- }
-}
-@media (min-width: 768px) and (max-width: 991px) {
- .visible-sm {
- display: block !important;
- }
- table.visible-sm {
- display: table !important;
- }
- tr.visible-sm {
- display: table-row !important;
- }
- th.visible-sm,
- td.visible-sm {
- display: table-cell !important;
- }
-}
-@media (min-width: 768px) and (max-width: 991px) {
- .visible-sm-block {
- display: block !important;
- }
-}
-@media (min-width: 768px) and (max-width: 991px) {
- .visible-sm-inline {
- display: inline !important;
- }
-}
-@media (min-width: 768px) and (max-width: 991px) {
- .visible-sm-inline-block {
- display: inline-block !important;
- }
-}
-@media (min-width: 992px) and (max-width: 1199px) {
- .visible-md {
- display: block !important;
- }
- table.visible-md {
- display: table !important;
- }
- tr.visible-md {
- display: table-row !important;
- }
- th.visible-md,
- td.visible-md {
- display: table-cell !important;
- }
-}
-@media (min-width: 992px) and (max-width: 1199px) {
- .visible-md-block {
- display: block !important;
- }
-}
-@media (min-width: 992px) and (max-width: 1199px) {
- .visible-md-inline {
- display: inline !important;
- }
-}
-@media (min-width: 992px) and (max-width: 1199px) {
- .visible-md-inline-block {
- display: inline-block !important;
- }
-}
-@media (min-width: 1200px) {
- .visible-lg {
- display: block !important;
- }
- table.visible-lg {
- display: table !important;
- }
- tr.visible-lg {
- display: table-row !important;
- }
- th.visible-lg,
- td.visible-lg {
- display: table-cell !important;
- }
-}
-@media (min-width: 1200px) {
- .visible-lg-block {
- display: block !important;
- }
-}
-@media (min-width: 1200px) {
- .visible-lg-inline {
- display: inline !important;
- }
-}
-@media (min-width: 1200px) {
- .visible-lg-inline-block {
- display: inline-block !important;
- }
-}
-@media (max-width: 767px) {
- .hidden-xs {
- display: none !important;
- }
-}
-@media (min-width: 768px) and (max-width: 991px) {
- .hidden-sm {
- display: none !important;
- }
-}
-@media (min-width: 992px) and (max-width: 1199px) {
- .hidden-md {
- display: none !important;
- }
-}
-@media (min-width: 1200px) {
- .hidden-lg {
- display: none !important;
- }
-}
-.visible-print {
- display: none !important;
-}
-@media print {
- .visible-print {
- display: block !important;
- }
- table.visible-print {
- display: table !important;
- }
- tr.visible-print {
- display: table-row !important;
- }
- th.visible-print,
- td.visible-print {
- display: table-cell !important;
- }
-}
-.navbar-toggle {
- position: relative;
- float: right;
- padding: 9px 10px;
- margin-right: 15px;
- margin-top: 8px;
- margin-bottom: 8px;
- background-color: transparent;
- background-image: none;
- border: 1px solid transparent;
- border-radius: 4px;
-}
-.navbar-toggle:focus {
- outline: 0;
-}
-.navbar-toggle .icon-bar {
- display: block;
- width: 22px;
- height: 2px;
- border-radius: 1px;
-}
-.navbar-toggle .icon-bar + .icon-bar {
- margin-top: 4px;
-}
-@media (min-width: 768px) {
- .navbar-toggle {
- display: none;
- }
-}
-.navbar-lang-btn .select2-container {
- margin: 0 !important;
-}
-.img-circle {
- border-radius: 50%;
-}
-
-.btn-default {
- color: #333;
- background-color: #fff;
- border-color: #ccc;
-}
-.btn-default:focus,
-.btn-default.focus {
- color: #333;
- background-color: #e6e6e6;
- border-color: #8c8c8c;
-}
-.btn-default:hover {
- color: #333;
- background-color: #e6e6e6;
- border-color: #adadad;
-}
-.btn-default:active,
-.btn-default.active,
-.open > .dropdown-toggle.btn-default {
- color: #333;
- background-color: #e6e6e6;
- background-image: none;
- border-color: #adadad;
-}
-.btn-default:active:hover,
-.btn-default.active:hover,
-.open > .dropdown-toggle.btn-default:hover,
-.btn-default:active:focus,
-.btn-default.active:focus,
-.open > .dropdown-toggle.btn-default:focus,
-.btn-default:active.focus,
-.btn-default.active.focus,
-.open > .dropdown-toggle.btn-default.focus {
- color: #333;
- background-color: #d4d4d4;
- border-color: #8c8c8c;
-}
-.btn-default.disabled:hover,
-.btn-default[disabled]:hover,
-fieldset[disabled] .btn-default:hover,
-.btn-default.disabled:focus,
-.btn-default[disabled]:focus,
-fieldset[disabled] .btn-default:focus,
-.btn-default.disabled.focus,
-.btn-default[disabled].focus,
-fieldset[disabled] .btn-default.focus {
- background-color: #fff;
- border-color: #ccc;
-}
-.btn-default .badge {
- color: #fff;
- background-color: #333;
-}
-.btn-primary {
- color: #fff;
- background-color: #337ab7;
- border-color: #2e6da4;
-}
-.btn-primary:focus,
-.btn-primary.focus {
- color: #fff;
- background-color: #286090;
- border-color: #122b40;
-}
-.btn-primary:hover {
- color: #fff;
- background-color: #286090;
- border-color: #204d74;
-}
-.btn-primary:active,
-.btn-primary.active,
-.open > .dropdown-toggle.btn-primary {
- color: #fff;
- background-color: #286090;
- background-image: none;
- border-color: #204d74;
-}
-.btn-primary:active:hover,
-.btn-primary.active:hover,
-.open > .dropdown-toggle.btn-primary:hover,
-.btn-primary:active:focus,
-.btn-primary.active:focus,
-.open > .dropdown-toggle.btn-primary:focus,
-.btn-primary:active.focus,
-.btn-primary.active.focus,
-.open > .dropdown-toggle.btn-primary.focus {
- color: #fff;
- background-color: #204d74;
- border-color: #122b40;
-}
-.btn-primary.disabled:hover,
-.btn-primary[disabled]:hover,
-fieldset[disabled] .btn-primary:hover,
-.btn-primary.disabled:focus,
-.btn-primary[disabled]:focus,
-fieldset[disabled] .btn-primary:focus,
-.btn-primary.disabled.focus,
-.btn-primary[disabled].focus,
-fieldset[disabled] .btn-primary.focus {
- background-color: #337ab7;
- border-color: #2e6da4;
-}
-.btn-primary .badge {
- color: #337ab7;
- background-color: #fff;
-}
-.btn-success {
- color: #fff;
- background-color: #5cb85c;
- border-color: #4cae4c;
-}
-.btn-success:focus,
-.btn-success.focus {
- color: #fff;
- background-color: #449d44;
- border-color: #255625;
-}
-.btn-success:hover {
- color: #fff;
- background-color: #449d44;
- border-color: #398439;
-}
-.btn-success:active,
-.btn-success.active,
-.open > .dropdown-toggle.btn-success {
- color: #fff;
- background-color: #449d44;
- background-image: none;
- border-color: #398439;
-}
-.btn-success:active:hover,
-.btn-success.active:hover,
-.open > .dropdown-toggle.btn-success:hover,
-.btn-success:active:focus,
-.btn-success.active:focus,
-.open > .dropdown-toggle.btn-success:focus,
-.btn-success:active.focus,
-.btn-success.active.focus,
-.open > .dropdown-toggle.btn-success.focus {
- color: #fff;
- background-color: #398439;
- border-color: #255625;
-}
-.btn-success.disabled:hover,
-.btn-success[disabled]:hover,
-fieldset[disabled] .btn-success:hover,
-.btn-success.disabled:focus,
-.btn-success[disabled]:focus,
-fieldset[disabled] .btn-success:focus,
-.btn-success.disabled.focus,
-.btn-success[disabled].focus,
-fieldset[disabled] .btn-success.focus {
- background-color: #5cb85c;
- border-color: #4cae4c;
-}
-.btn-success .badge {
- color: #5cb85c;
- background-color: #fff;
-}
-.btn-info {
- color: #fff;
- background-color: #5bc0de;
- border-color: #46b8da;
-}
-.btn-info:focus,
-.btn-info.focus {
- color: #fff;
- background-color: #31b0d5;
- border-color: #1b6d85;
-}
-.btn-info:hover {
- color: #fff;
- background-color: #31b0d5;
- border-color: #269abc;
-}
-.btn-info:active,
-.btn-info.active,
-.open > .dropdown-toggle.btn-info {
- color: #fff;
- background-color: #31b0d5;
- background-image: none;
- border-color: #269abc;
-}
-.btn-info:active:hover,
-.btn-info.active:hover,
-.open > .dropdown-toggle.btn-info:hover,
-.btn-info:active:focus,
-.btn-info.active:focus,
-.open > .dropdown-toggle.btn-info:focus,
-.btn-info:active.focus,
-.btn-info.active.focus,
-.open > .dropdown-toggle.btn-info.focus {
- color: #fff;
- background-color: #269abc;
- border-color: #1b6d85;
-}
-.btn-info.disabled:hover,
-.btn-info[disabled]:hover,
-fieldset[disabled] .btn-info:hover,
-.btn-info.disabled:focus,
-.btn-info[disabled]:focus,
-fieldset[disabled] .btn-info:focus,
-.btn-info.disabled.focus,
-.btn-info[disabled].focus,
-fieldset[disabled] .btn-info.focus {
- background-color: #5bc0de;
- border-color: #46b8da;
-}
-.btn-info .badge {
- color: #5bc0de;
- background-color: #fff;
-}
-.btn-warning {
- color: #fff;
- background-color: #f0ad4e;
- border-color: #eea236;
-}
-.btn-warning:focus,
-.btn-warning.focus {
- color: #fff;
- background-color: #ec971f;
- border-color: #985f0d;
-}
-.btn-warning:hover {
- color: #fff;
- background-color: #ec971f;
- border-color: #d58512;
-}
-.btn-warning:active,
-.btn-warning.active,
-.open > .dropdown-toggle.btn-warning {
- color: #fff;
- background-color: #ec971f;
- background-image: none;
- border-color: #d58512;
-}
-.btn-warning:active:hover,
-.btn-warning.active:hover,
-.open > .dropdown-toggle.btn-warning:hover,
-.btn-warning:active:focus,
-.btn-warning.active:focus,
-.open > .dropdown-toggle.btn-warning:focus,
-.btn-warning:active.focus,
-.btn-warning.active.focus,
-.open > .dropdown-toggle.btn-warning.focus {
- color: #fff;
- background-color: #d58512;
- border-color: #985f0d;
-}
-.btn-warning.disabled:hover,
-.btn-warning[disabled]:hover,
-fieldset[disabled] .btn-warning:hover,
-.btn-warning.disabled:focus,
-.btn-warning[disabled]:focus,
-fieldset[disabled] .btn-warning:focus,
-.btn-warning.disabled.focus,
-.btn-warning[disabled].focus,
-fieldset[disabled] .btn-warning.focus {
- background-color: #f0ad4e;
- border-color: #eea236;
-}
-.btn-warning .badge {
- color: #f0ad4e;
- background-color: #fff;
-}
-.btn-danger {
- color: #fff;
- background-color: #d9534f;
- border-color: #d43f3a;
-}
-.btn-danger:focus,
-.btn-danger.focus {
- color: #fff;
- background-color: #c9302c;
- border-color: #761c19;
-}
-.btn-danger:hover {
- color: #fff;
- background-color: #c9302c;
- border-color: #ac2925;
-}
-.btn-danger:active,
-.btn-danger.active,
-.open > .dropdown-toggle.btn-danger {
- color: #fff;
- background-color: #c9302c;
- background-image: none;
- border-color: #ac2925;
-}
-.btn-danger:active:hover,
-.btn-danger.active:hover,
-.open > .dropdown-toggle.btn-danger:hover,
-.btn-danger:active:focus,
-.btn-danger.active:focus,
-.open > .dropdown-toggle.btn-danger:focus,
-.btn-danger:active.focus,
-.btn-danger.active.focus,
-.open > .dropdown-toggle.btn-danger.focus {
- color: #fff;
- background-color: #ac2925;
- border-color: #761c19;
-}
-.btn-danger.disabled:hover,
-.btn-danger[disabled]:hover,
-fieldset[disabled] .btn-danger:hover,
-.btn-danger.disabled:focus,
-.btn-danger[disabled]:focus,
-fieldset[disabled] .btn-danger:focus,
-.btn-danger.disabled.focus,
-.btn-danger[disabled].focus,
-fieldset[disabled] .btn-danger.focus {
- background-color: #d9534f;
- border-color: #d43f3a;
-}
-.btn-danger .badge {
- color: #d9534f;
- background-color: #fff;
-}
-
-#mysearch, #myNavbar, #lastItemOnMenu{
- padding-top: 4px;
-}
-.panel {
- margin-bottom: 20px;
- background-color: #fff;
- border: 1px solid transparent;
- border-radius: 4px;
- -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
- box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
-}
-.panel-body {
- padding: 15px;
-}
-.panel-heading {
- padding: 10px 15px;
- border-bottom: 1px solid transparent;
- border-top-left-radius: 3px;
- border-top-right-radius: 3px;
-}
-.panel-heading > .dropdown .dropdown-toggle {
- color: inherit;
-}
-.panel-title {
- margin-top: 0;
- margin-bottom: 0;
- font-size: 16px;
- color: inherit;
-}
-.panel-title > a,
-.panel-title > small,
-.panel-title > .small,
-.panel-title > small > a,
-.panel-title > .small > a {
- color: inherit;
-}
-.panel-footer {
- padding: 10px 15px;
- background-color: #f5f5f5;
- border-top: 1px solid #ddd;
- border-bottom-right-radius: 3px;
- border-bottom-left-radius: 3px;
-}
-.panel > .list-group,
-.panel > .panel-collapse > .list-group {
- margin-bottom: 0;
-}
-.panel > .list-group .list-group-item,
-.panel > .panel-collapse > .list-group .list-group-item {
- border-width: 1px 0;
- border-radius: 0;
-}
-.panel > .list-group:first-child .list-group-item:first-child,
-.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child {
- border-top: 0;
- border-top-left-radius: 3px;
- border-top-right-radius: 3px;
-}
-.panel > .list-group:last-child .list-group-item:last-child,
-.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child {
- border-bottom: 0;
- border-bottom-right-radius: 3px;
- border-bottom-left-radius: 3px;
-}
-.panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child {
- border-top-left-radius: 0;
- border-top-right-radius: 0;
-}
-.panel-heading + .list-group .list-group-item:first-child {
- border-top-width: 0;
-}
-.list-group + .panel-footer {
- border-top-width: 0;
-}
-.panel > .table,
-.panel > .table-responsive > .table,
-.panel > .panel-collapse > .table {
- margin-bottom: 0;
-}
-.panel > .table caption,
-.panel > .table-responsive > .table caption,
-.panel > .panel-collapse > .table caption {
- padding-right: 15px;
- padding-left: 15px;
-}
-.panel > .table:first-child,
-.panel > .table-responsive:first-child > .table:first-child {
- border-top-left-radius: 3px;
- border-top-right-radius: 3px;
-}
-.panel > .table:first-child > thead:first-child > tr:first-child,
-.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child,
-.panel > .table:first-child > tbody:first-child > tr:first-child,
-.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child {
- border-top-left-radius: 3px;
- border-top-right-radius: 3px;
-}
-.panel > .table:first-child > thead:first-child > tr:first-child td:first-child,
-.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,
-.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,
-.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,
-.panel > .table:first-child > thead:first-child > tr:first-child th:first-child,
-.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,
-.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,
-.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {
- border-top-left-radius: 3px;
-}
-.panel > .table:first-child > thead:first-child > tr:first-child td:last-child,
-.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,
-.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,
-.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,
-.panel > .table:first-child > thead:first-child > tr:first-child th:last-child,
-.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,
-.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,
-.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {
- border-top-right-radius: 3px;
-}
-.panel > .table:last-child,
-.panel > .table-responsive:last-child > .table:last-child {
- border-bottom-right-radius: 3px;
- border-bottom-left-radius: 3px;
-}
-.panel > .table:last-child > tbody:last-child > tr:last-child,
-.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child,
-.panel > .table:last-child > tfoot:last-child > tr:last-child,
-.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child {
- border-bottom-right-radius: 3px;
- border-bottom-left-radius: 3px;
-}
-.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,
-.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,
-.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
-.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
-.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,
-.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,
-.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,
-.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {
- border-bottom-left-radius: 3px;
-}
-.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,
-.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,
-.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
-.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
-.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,
-.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,
-.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,
-.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {
- border-bottom-right-radius: 3px;
-}
-.panel > .panel-body + .table,
-.panel > .panel-body + .table-responsive,
-.panel > .table + .panel-body,
-.panel > .table-responsive + .panel-body {
- border-top: 1px solid #ddd;
-}
-.panel > .table > tbody:first-child > tr:first-child th,
-.panel > .table > tbody:first-child > tr:first-child td {
- border-top: 0;
-}
-.panel > .table-bordered,
-.panel > .table-responsive > .table-bordered {
- border: 0;
-}
-.panel > .table-bordered > thead > tr > th:first-child,
-.panel > .table-responsive > .table-bordered > thead > tr > th:first-child,
-.panel > .table-bordered > tbody > tr > th:first-child,
-.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,
-.panel > .table-bordered > tfoot > tr > th:first-child,
-.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,
-.panel > .table-bordered > thead > tr > td:first-child,
-.panel > .table-responsive > .table-bordered > thead > tr > td:first-child,
-.panel > .table-bordered > tbody > tr > td:first-child,
-.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,
-.panel > .table-bordered > tfoot > tr > td:first-child,
-.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {
- border-left: 0;
-}
-.panel > .table-bordered > thead > tr > th:last-child,
-.panel > .table-responsive > .table-bordered > thead > tr > th:last-child,
-.panel > .table-bordered > tbody > tr > th:last-child,
-.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,
-.panel > .table-bordered > tfoot > tr > th:last-child,
-.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,
-.panel > .table-bordered > thead > tr > td:last-child,
-.panel > .table-responsive > .table-bordered > thead > tr > td:last-child,
-.panel > .table-bordered > tbody > tr > td:last-child,
-.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,
-.panel > .table-bordered > tfoot > tr > td:last-child,
-.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {
- border-right: 0;
-}
-.panel > .table-bordered > thead > tr:first-child > td,
-.panel > .table-responsive > .table-bordered > thead > tr:first-child > td,
-.panel > .table-bordered > tbody > tr:first-child > td,
-.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,
-.panel > .table-bordered > thead > tr:first-child > th,
-.panel > .table-responsive > .table-bordered > thead > tr:first-child > th,
-.panel > .table-bordered > tbody > tr:first-child > th,
-.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {
- border-bottom: 0;
-}
-.panel > .table-bordered > tbody > tr:last-child > td,
-.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,
-.panel > .table-bordered > tfoot > tr:last-child > td,
-.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,
-.panel > .table-bordered > tbody > tr:last-child > th,
-.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,
-.panel > .table-bordered > tfoot > tr:last-child > th,
-.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {
- border-bottom: 0;
-}
-.panel > .table-responsive {
- margin-bottom: 0;
- border: 0;
-}
-.panel-group {
- margin-bottom: 20px;
-}
-.panel-group .panel {
- margin-bottom: 0;
- border-radius: 4px;
-}
-.panel-group .panel + .panel {
- margin-top: 5px;
-}
-.panel-group .panel-heading {
- border-bottom: 0;
-}
-.panel-group .panel-heading + .panel-collapse > .panel-body,
-.panel-group .panel-heading + .panel-collapse > .list-group {
- border-top: 1px solid #ddd;
-}
-.panel-group .panel-footer {
- border-top: 0;
-}
-.panel-group .panel-footer + .panel-collapse .panel-body {
- border-bottom: 1px solid #ddd;
-}
-.panel-default {
- border-color: #ddd;
-}
-.panel-default > .panel-heading {
- color: #333333;
- background-color: #f5f5f5;
- border-color: #ddd;
-}
-.panel-default > .panel-heading + .panel-collapse > .panel-body {
- border-top-color: #ddd;
-}
-.panel-default > .panel-heading .badge {
- color: #f5f5f5;
- background-color: #333333;
-}
-.panel-default > .panel-footer + .panel-collapse > .panel-body {
- border-bottom-color: #ddd;
-}
-.panel-primary {
- border-color: #337ab7;
-}
-.panel-primary > .panel-heading {
- color: #fff;
- background-color: #337ab7;
- border-color: #337ab7;
-}
-.panel-primary > .panel-heading + .panel-collapse > .panel-body {
- border-top-color: #337ab7;
-}
-.panel-primary > .panel-heading .badge {
- color: #337ab7;
- background-color: #fff;
-}
-.panel-primary > .panel-footer + .panel-collapse > .panel-body {
- border-bottom-color: #337ab7;
-}
-.panel-success {
- border-color: #d6e9c6;
-}
-.panel-success > .panel-heading {
- color: #3c763d;
- background-color: #dff0d8;
- border-color: #d6e9c6;
-}
-.panel-success > .panel-heading + .panel-collapse > .panel-body {
- border-top-color: #d6e9c6;
-}
-.panel-success > .panel-heading .badge {
- color: #dff0d8;
- background-color: #3c763d;
-}
-.panel-success > .panel-footer + .panel-collapse > .panel-body {
- border-bottom-color: #d6e9c6;
-}
-.panel-info {
- border-color: #bce8f1;
-}
-.panel-info > .panel-heading {
- color: #31708f;
- background-color: #d9edf7;
- border-color: #bce8f1;
-}
-.panel-info > .panel-heading + .panel-collapse > .panel-body {
- border-top-color: #bce8f1;
-}
-.panel-info > .panel-heading .badge {
- color: #d9edf7;
- background-color: #31708f;
-}
-.panel-info > .panel-footer + .panel-collapse > .panel-body {
- border-bottom-color: #bce8f1;
-}
-.panel-warning {
- border-color: #faebcc;
-}
-.panel-warning > .panel-heading {
- color: #8a6d3b;
- background-color: #fcf8e3;
- border-color: #faebcc;
-}
-.panel-warning > .panel-heading + .panel-collapse > .panel-body {
- border-top-color: #faebcc;
-}
-.panel-warning > .panel-heading .badge {
- color: #fcf8e3;
- background-color: #8a6d3b;
-}
-.panel-warning > .panel-footer + .panel-collapse > .panel-body {
- border-bottom-color: #faebcc;
-}
-.panel-danger {
- border-color: #ebccd1;
-}
-.panel-danger > .panel-heading {
- color: #a94442;
- background-color: #f2dede;
- border-color: #ebccd1;
-}
-.panel-danger > .panel-heading + .panel-collapse > .panel-body {
- border-top-color: #ebccd1;
-}
-.panel-danger > .panel-heading .badge {
- color: #f2dede;
- background-color: #a94442;
-}
-.panel-danger > .panel-footer + .panel-collapse > .panel-body {
- border-bottom-color: #ebccd1;
-}
-
-
-.col-xs-1,
-.col-sm-1,
-.col-md-1,
-.col-lg-1,
-.col-xs-2,
-.col-sm-2,
-.col-md-2,
-.col-lg-2,
-.col-xs-3,
-.col-sm-3,
-.col-md-3,
-.col-lg-3,
-.col-xs-4,
-.col-sm-4,
-.col-md-4,
-.col-lg-4,
-.col-xs-5,
-.col-sm-5,
-.col-md-5,
-.col-lg-5,
-.col-xs-6,
-.col-sm-6,
-.col-md-6,
-.col-lg-6,
-.col-xs-7,
-.col-sm-7,
-.col-md-7,
-.col-lg-7,
-.col-xs-8,
-.col-sm-8,
-.col-md-8,
-.col-lg-8,
-.col-xs-9,
-.col-sm-9,
-.col-md-9,
-.col-lg-9,
-.col-xs-10,
-.col-sm-10,
-.col-md-10,
-.col-lg-10,
-.col-xs-11,
-.col-sm-11,
-.col-md-11,
-.col-lg-11,
-.col-xs-12,
-.col-sm-12,
-.col-md-12,
-.col-lg-12 {
- position: relative;
- min-height: 1px;
- padding-right: 15px;
- padding-left: 15px;
-}
-.col-xs-1,
-.col-xs-2,
-.col-xs-3,
-.col-xs-4,
-.col-xs-5,
-.col-xs-6,
-.col-xs-7,
-.col-xs-8,
-.col-xs-9,
-.col-xs-10,
-.col-xs-11,
-.col-xs-12 {
- float: left;
-}
-.col-xs-12 {
- width: 100%;
-}
-.col-xs-11 {
- width: 91.66666667%;
-}
-.col-xs-10 {
- width: 83.33333333%;
-}
-.col-xs-9 {
- width: 75%;
-}
-.col-xs-8 {
- width: 66.66666667%;
-}
-.col-xs-7 {
- width: 58.33333333%;
-}
-.col-xs-6 {
- width: 50%;
-}
-.col-xs-5 {
- width: 41.66666667%;
-}
-.col-xs-4 {
- width: 33.33333333%;
-}
-.col-xs-3 {
- width: 25%;
-}
-.col-xs-2 {
- width: 16.66666667%;
-}
-.col-xs-1 {
- width: 8.33333333%;
-}
-.col-xs-pull-12 {
- right: 100%;
-}
-.col-xs-pull-11 {
- right: 91.66666667%;
-}
-.col-xs-pull-10 {
- right: 83.33333333%;
-}
-.col-xs-pull-9 {
- right: 75%;
-}
-.col-xs-pull-8 {
- right: 66.66666667%;
-}
-.col-xs-pull-7 {
- right: 58.33333333%;
-}
-.col-xs-pull-6 {
- right: 50%;
-}
-.col-xs-pull-5 {
- right: 41.66666667%;
-}
-.col-xs-pull-4 {
- right: 33.33333333%;
-}
-.col-xs-pull-3 {
- right: 25%;
-}
-.col-xs-pull-2 {
- right: 16.66666667%;
-}
-.col-xs-pull-1 {
- right: 8.33333333%;
-}
-.col-xs-pull-0 {
- right: auto;
-}
-.col-xs-push-12 {
- left: 100%;
-}
-.col-xs-push-11 {
- left: 91.66666667%;
-}
-.col-xs-push-10 {
- left: 83.33333333%;
-}
-.col-xs-push-9 {
- left: 75%;
-}
-.col-xs-push-8 {
- left: 66.66666667%;
-}
-.col-xs-push-7 {
- left: 58.33333333%;
-}
-.col-xs-push-6 {
- left: 50%;
-}
-.col-xs-push-5 {
- left: 41.66666667%;
-}
-.col-xs-push-4 {
- left: 33.33333333%;
-}
-.col-xs-push-3 {
- left: 25%;
-}
-.col-xs-push-2 {
- left: 16.66666667%;
-}
-.col-xs-push-1 {
- left: 8.33333333%;
-}
-.col-xs-push-0 {
- left: auto;
-}
-.col-xs-offset-12 {
- margin-left: 100%;
-}
-.col-xs-offset-11 {
- margin-left: 91.66666667%;
-}
-.col-xs-offset-10 {
- margin-left: 83.33333333%;
-}
-.col-xs-offset-9 {
- margin-left: 75%;
-}
-.col-xs-offset-8 {
- margin-left: 66.66666667%;
-}
-.col-xs-offset-7 {
- margin-left: 58.33333333%;
-}
-.col-xs-offset-6 {
- margin-left: 50%;
-}
-.col-xs-offset-5 {
- margin-left: 41.66666667%;
-}
-.col-xs-offset-4 {
- margin-left: 33.33333333%;
-}
-.col-xs-offset-3 {
- margin-left: 25%;
-}
-.col-xs-offset-2 {
- margin-left: 16.66666667%;
-}
-.col-xs-offset-1 {
- margin-left: 8.33333333%;
-}
-.col-xs-offset-0 {
- margin-left: 0%;
-}
-@media (min-width: 768px) {
- .col-sm-1,
- .col-sm-2,
- .col-sm-3,
- .col-sm-4,
- .col-sm-5,
- .col-sm-6,
- .col-sm-7,
- .col-sm-8,
- .col-sm-9,
- .col-sm-10,
- .col-sm-11,
- .col-sm-12 {
- float: left;
- }
- .col-sm-12 {
- width: 100%;
- }
- .col-sm-11 {
- width: 91.66666667%;
- }
- .col-sm-10 {
- width: 83.33333333%;
- }
- .col-sm-9 {
- width: 75%;
- }
- .col-sm-8 {
- width: 66.66666667%;
- }
- .col-sm-7 {
- width: 58.33333333%;
- }
- .col-sm-6 {
- width: 50%;
- }
- .col-sm-5 {
- width: 41.66666667%;
- }
- .col-sm-4 {
- width: 33.33333333%;
- }
- .col-sm-3 {
- width: 25%;
- }
- .col-sm-2 {
- width: 16.66666667%;
- }
- .col-sm-1 {
- width: 8.33333333%;
- }
- .col-sm-pull-12 {
- right: 100%;
- }
- .col-sm-pull-11 {
- right: 91.66666667%;
- }
- .col-sm-pull-10 {
- right: 83.33333333%;
- }
- .col-sm-pull-9 {
- right: 75%;
- }
- .col-sm-pull-8 {
- right: 66.66666667%;
- }
- .col-sm-pull-7 {
- right: 58.33333333%;
- }
- .col-sm-pull-6 {
- right: 50%;
- }
- .col-sm-pull-5 {
- right: 41.66666667%;
- }
- .col-sm-pull-4 {
- right: 33.33333333%;
- }
- .col-sm-pull-3 {
- right: 25%;
- }
- .col-sm-pull-2 {
- right: 16.66666667%;
- }
- .col-sm-pull-1 {
- right: 8.33333333%;
- }
- .col-sm-pull-0 {
- right: auto;
- }
- .col-sm-push-12 {
- left: 100%;
- }
- .col-sm-push-11 {
- left: 91.66666667%;
- }
- .col-sm-push-10 {
- left: 83.33333333%;
- }
- .col-sm-push-9 {
- left: 75%;
- }
- .col-sm-push-8 {
- left: 66.66666667%;
- }
- .col-sm-push-7 {
- left: 58.33333333%;
- }
- .col-sm-push-6 {
- left: 50%;
- }
- .col-sm-push-5 {
- left: 41.66666667%;
- }
- .col-sm-push-4 {
- left: 33.33333333%;
- }
- .col-sm-push-3 {
- left: 25%;
- }
- .col-sm-push-2 {
- left: 16.66666667%;
- }
- .col-sm-push-1 {
- left: 8.33333333%;
- }
- .col-sm-push-0 {
- left: auto;
- }
- .col-sm-offset-12 {
- margin-left: 100%;
- }
- .col-sm-offset-11 {
- margin-left: 91.66666667%;
- }
- .col-sm-offset-10 {
- margin-left: 83.33333333%;
- }
- .col-sm-offset-9 {
- margin-left: 75%;
- }
- .col-sm-offset-8 {
- margin-left: 66.66666667%;
- }
- .col-sm-offset-7 {
- margin-left: 58.33333333%;
- }
- .col-sm-offset-6 {
- margin-left: 50%;
- }
- .col-sm-offset-5 {
- margin-left: 41.66666667%;
- }
- .col-sm-offset-4 {
- margin-left: 33.33333333%;
- }
- .col-sm-offset-3 {
- margin-left: 25%;
- }
- .col-sm-offset-2 {
- margin-left: 16.66666667%;
- }
- .col-sm-offset-1 {
- margin-left: 8.33333333%;
- }
- .col-sm-offset-0 {
- margin-left: 0%;
- }
-}
-@media (min-width: 992px) {
- .col-md-1,
- .col-md-2,
- .col-md-3,
- .col-md-4,
- .col-md-5,
- .col-md-6,
- .col-md-7,
- .col-md-8,
- .col-md-9,
- .col-md-10,
- .col-md-11,
- .col-md-12 {
- float: left;
- }
- .col-md-12 {
- width: 100%;
- }
- .col-md-11 {
- width: 91.66666667%;
- }
- .col-md-10 {
- width: 83.33333333%;
- }
- .col-md-9 {
- width: 75%;
- }
- .col-md-8 {
- width: 66.66666667%;
- }
- .col-md-7 {
- width: 58.33333333%;
- }
- .col-md-6 {
- width: 50%;
- }
- .col-md-5 {
- width: 41.66666667%;
- }
- .col-md-4 {
- width: 33.33333333%;
- }
- .col-md-3 {
- width: 25%;
- }
- .col-md-2 {
- width: 16.66666667%;
- }
- .col-md-1 {
- width: 8.33333333%;
- }
- .col-md-pull-12 {
- right: 100%;
- }
- .col-md-pull-11 {
- right: 91.66666667%;
- }
- .col-md-pull-10 {
- right: 83.33333333%;
- }
- .col-md-pull-9 {
- right: 75%;
- }
- .col-md-pull-8 {
- right: 66.66666667%;
- }
- .col-md-pull-7 {
- right: 58.33333333%;
- }
- .col-md-pull-6 {
- right: 50%;
- }
- .col-md-pull-5 {
- right: 41.66666667%;
- }
- .col-md-pull-4 {
- right: 33.33333333%;
- }
- .col-md-pull-3 {
- right: 25%;
- }
- .col-md-pull-2 {
- right: 16.66666667%;
- }
- .col-md-pull-1 {
- right: 8.33333333%;
- }
- .col-md-pull-0 {
- right: auto;
- }
- .col-md-push-12 {
- left: 100%;
- }
- .col-md-push-11 {
- left: 91.66666667%;
- }
- .col-md-push-10 {
- left: 83.33333333%;
- }
- .col-md-push-9 {
- left: 75%;
- }
- .col-md-push-8 {
- left: 66.66666667%;
- }
- .col-md-push-7 {
- left: 58.33333333%;
- }
- .col-md-push-6 {
- left: 50%;
- }
- .col-md-push-5 {
- left: 41.66666667%;
- }
- .col-md-push-4 {
- left: 33.33333333%;
- }
- .col-md-push-3 {
- left: 25%;
- }
- .col-md-push-2 {
- left: 16.66666667%;
- }
- .col-md-push-1 {
- left: 8.33333333%;
- }
- .col-md-push-0 {
- left: auto;
- }
- .col-md-offset-12 {
- margin-left: 100%;
- }
- .col-md-offset-11 {
- margin-left: 91.66666667%;
- }
- .col-md-offset-10 {
- margin-left: 83.33333333%;
- }
- .col-md-offset-9 {
- margin-left: 75%;
- }
- .col-md-offset-8 {
- margin-left: 66.66666667%;
- }
- .col-md-offset-7 {
- margin-left: 58.33333333%;
- }
- .col-md-offset-6 {
- margin-left: 50%;
- }
- .col-md-offset-5 {
- margin-left: 41.66666667%;
- }
- .col-md-offset-4 {
- margin-left: 33.33333333%;
- }
- .col-md-offset-3 {
- margin-left: 25%;
- }
- .col-md-offset-2 {
- margin-left: 16.66666667%;
- }
- .col-md-offset-1 {
- margin-left: 8.33333333%;
- }
- .col-md-offset-0 {
- margin-left: 0%;
- }
-}
-@media (min-width: 1200px) {
- .col-lg-1,
- .col-lg-2,
- .col-lg-3,
- .col-lg-4,
- .col-lg-5,
- .col-lg-6,
- .col-lg-7,
- .col-lg-8,
- .col-lg-9,
- .col-lg-10,
- .col-lg-11,
- .col-lg-12 {
- float: left;
- }
- .col-lg-12 {
- width: 100%;
- }
- .col-lg-11 {
- width: 91.66666667%;
- }
- .col-lg-10 {
- width: 83.33333333%;
- }
- .col-lg-9 {
- width: 75%;
- }
- .col-lg-8 {
- width: 66.66666667%;
- }
- .col-lg-7 {
- width: 58.33333333%;
- }
- .col-lg-6 {
- width: 50%;
- }
- .col-lg-5 {
- width: 41.66666667%;
- }
- .col-lg-4 {
- width: 33.33333333%;
- }
- .col-lg-3 {
- width: 25%;
- }
- .col-lg-2 {
- width: 16.66666667%;
- }
- .col-lg-1 {
- width: 8.33333333%;
- }
- .col-lg-pull-12 {
- right: 100%;
- }
- .col-lg-pull-11 {
- right: 91.66666667%;
- }
- .col-lg-pull-10 {
- right: 83.33333333%;
- }
- .col-lg-pull-9 {
- right: 75%;
- }
- .col-lg-pull-8 {
- right: 66.66666667%;
- }
- .col-lg-pull-7 {
- right: 58.33333333%;
- }
- .col-lg-pull-6 {
- right: 50%;
- }
- .col-lg-pull-5 {
- right: 41.66666667%;
- }
- .col-lg-pull-4 {
- right: 33.33333333%;
- }
- .col-lg-pull-3 {
- right: 25%;
- }
- .col-lg-pull-2 {
- right: 16.66666667%;
- }
- .col-lg-pull-1 {
- right: 8.33333333%;
- }
- .col-lg-pull-0 {
- right: auto;
- }
- .col-lg-push-12 {
- left: 100%;
- }
- .col-lg-push-11 {
- left: 91.66666667%;
- }
- .col-lg-push-10 {
- left: 83.33333333%;
- }
- .col-lg-push-9 {
- left: 75%;
- }
- .col-lg-push-8 {
- left: 66.66666667%;
- }
- .col-lg-push-7 {
- left: 58.33333333%;
- }
- .col-lg-push-6 {
- left: 50%;
- }
- .col-lg-push-5 {
- left: 41.66666667%;
- }
- .col-lg-push-4 {
- left: 33.33333333%;
- }
- .col-lg-push-3 {
- left: 25%;
- }
- .col-lg-push-2 {
- left: 16.66666667%;
- }
- .col-lg-push-1 {
- left: 8.33333333%;
- }
- .col-lg-push-0 {
- left: auto;
- }
- .col-lg-offset-12 {
- margin-left: 100%;
- }
- .col-lg-offset-11 {
- margin-left: 91.66666667%;
- }
- .col-lg-offset-10 {
- margin-left: 83.33333333%;
- }
- .col-lg-offset-9 {
- margin-left: 75%;
- }
- .col-lg-offset-8 {
- margin-left: 66.66666667%;
- }
- .col-lg-offset-7 {
- margin-left: 58.33333333%;
- }
- .col-lg-offset-6 {
- margin-left: 50%;
- }
- .col-lg-offset-5 {
- margin-left: 41.66666667%;
- }
- .col-lg-offset-4 {
- margin-left: 33.33333333%;
- }
- .col-lg-offset-3 {
- margin-left: 25%;
- }
- .col-lg-offset-2 {
- margin-left: 16.66666667%;
- }
- .col-lg-offset-1 {
- margin-left: 8.33333333%;
- }
- .col-lg-offset-0 {
- margin-left: 0%;
- }
-}
-
-
-.btn-lg,
-.btn-group-lg > .btn {
- padding: 10px 16px;
- font-size: 18px;
- line-height: 1.3333333;
- border-radius: 6px;
-}
-.btn-sm,
-.btn-group-sm > .btn {
- padding: 5px 10px;
- font-size: 12px;
- line-height: 1.5;
- border-radius: 3px;
-}
-.btn-xs,
-.btn-group-xs > .btn {
- padding: 1px 5px;
- font-size: 12px;
- line-height: 1.5;
- border-radius: 3px;
-}
-.btn-block {
- display: block;
- width: 100%;
-}
-.btn-block + .btn-block {
- margin-top: 5px;
-}
-#sideBarContainer > ul > li{
- width: 100%;
-}
-
-.pull-right {
- float: right !important;
-}
-.pull-left {
- float: left !important;
-}
-#sideBarContainer > ul > li > ul{
- display: block;
-}
-#sideBarContainer .nav > li > a{
- position: relative;
- display: block;
- padding: 10px 15px;
-}
-
-#sideBarContainer .nav > li > a:hover,
-#sideBarContainer .nav > li > a:focus {
- text-decoration: none;
- background-color: #eeeeee;
-}
-
-a {
- text-decoration: none;
- text-decoration-line: none;
- text-decoration-thickness: initial;
- text-decoration-style: initial;
- text-decoration-color: initial;
-}
-
-#sideBarContainer > ul > li > ul.dropdown-menu {
- display: none;
-}
-#sideBarContainer > ul > li > ul.dropdown-menu a {
- margin: 0 20px;
+#mainNavBar {
+ display: block;
+}
+body {
+ padding-top: 0 !important;
+}
+.hidden {
+ display: none;
+}
+@media (max-width: 767px) {
+ .hidden-xs {
+ display: none !important;
+ }
+}
+@media (min-width: 768px) and (max-width: 991px) {
+ .hidden-sm {
+ display: none !important;
+ }
+}
+@media (min-width: 992px) and (max-width: 1199px) {
+ .hidden-md {
+ display: none !important;
+ }
+}
+@media (min-width: 1200px) {
+ .hidden-lg {
+ display: none !important;
+ }
+}
+
+.visible-xs,
+.visible-sm,
+.visible-md,
+.visible-lg {
+ display: none !important;
+}
+.visible-xs-block,
+.visible-xs-inline,
+.visible-xs-inline-block,
+.visible-sm-block,
+.visible-sm-inline,
+.visible-sm-inline-block,
+.visible-md-block,
+.visible-md-inline,
+.visible-md-inline-block,
+.visible-lg-block,
+.visible-lg-inline,
+.visible-lg-inline-block {
+ display: none !important;
+}
+@media (max-width: 767px) {
+ .visible-xs {
+ display: block !important;
+ }
+ table.visible-xs {
+ display: table !important;
+ }
+ tr.visible-xs {
+ display: table-row !important;
+ }
+ th.visible-xs,
+ td.visible-xs {
+ display: table-cell !important;
+ }
+}
+@media (max-width: 767px) {
+ .visible-xs-block {
+ display: block !important;
+ }
+}
+@media (max-width: 767px) {
+ .visible-xs-inline {
+ display: inline !important;
+ }
+}
+@media (max-width: 767px) {
+ .visible-xs-inline-block {
+ display: inline-block !important;
+ }
+}
+@media (min-width: 768px) and (max-width: 991px) {
+ .visible-sm {
+ display: block !important;
+ }
+ table.visible-sm {
+ display: table !important;
+ }
+ tr.visible-sm {
+ display: table-row !important;
+ }
+ th.visible-sm,
+ td.visible-sm {
+ display: table-cell !important;
+ }
+}
+@media (min-width: 768px) and (max-width: 991px) {
+ .visible-sm-block {
+ display: block !important;
+ }
+}
+@media (min-width: 768px) and (max-width: 991px) {
+ .visible-sm-inline {
+ display: inline !important;
+ }
+}
+@media (min-width: 768px) and (max-width: 991px) {
+ .visible-sm-inline-block {
+ display: inline-block !important;
+ }
+}
+@media (min-width: 992px) and (max-width: 1199px) {
+ .visible-md {
+ display: block !important;
+ }
+ table.visible-md {
+ display: table !important;
+ }
+ tr.visible-md {
+ display: table-row !important;
+ }
+ th.visible-md,
+ td.visible-md {
+ display: table-cell !important;
+ }
+}
+@media (min-width: 992px) and (max-width: 1199px) {
+ .visible-md-block {
+ display: block !important;
+ }
+}
+@media (min-width: 992px) and (max-width: 1199px) {
+ .visible-md-inline {
+ display: inline !important;
+ }
+}
+@media (min-width: 992px) and (max-width: 1199px) {
+ .visible-md-inline-block {
+ display: inline-block !important;
+ }
+}
+@media (min-width: 1200px) {
+ .visible-lg {
+ display: block !important;
+ }
+ table.visible-lg {
+ display: table !important;
+ }
+ tr.visible-lg {
+ display: table-row !important;
+ }
+ th.visible-lg,
+ td.visible-lg {
+ display: table-cell !important;
+ }
+}
+@media (min-width: 1200px) {
+ .visible-lg-block {
+ display: block !important;
+ }
+}
+@media (min-width: 1200px) {
+ .visible-lg-inline {
+ display: inline !important;
+ }
+}
+@media (min-width: 1200px) {
+ .visible-lg-inline-block {
+ display: inline-block !important;
+ }
+}
+@media (max-width: 767px) {
+ .hidden-xs {
+ display: none !important;
+ }
+}
+@media (min-width: 768px) and (max-width: 991px) {
+ .hidden-sm {
+ display: none !important;
+ }
+}
+@media (min-width: 992px) and (max-width: 1199px) {
+ .hidden-md {
+ display: none !important;
+ }
+}
+@media (min-width: 1200px) {
+ .hidden-lg {
+ display: none !important;
+ }
+}
+.visible-print {
+ display: none !important;
+}
+@media print {
+ .visible-print {
+ display: block !important;
+ }
+ table.visible-print {
+ display: table !important;
+ }
+ tr.visible-print {
+ display: table-row !important;
+ }
+ th.visible-print,
+ td.visible-print {
+ display: table-cell !important;
+ }
+}
+.navbar-toggle {
+ position: relative;
+ float: right;
+ padding: 9px 10px;
+ margin-right: 15px;
+ margin-top: 8px;
+ margin-bottom: 8px;
+ background-color: transparent;
+ background-image: none;
+ border: 1px solid transparent;
+ border-radius: 4px;
+}
+.navbar-toggle:focus {
+ outline: 0;
+}
+.navbar-toggle .icon-bar {
+ display: block;
+ width: 22px;
+ height: 2px;
+ border-radius: 1px;
+}
+.navbar-toggle .icon-bar + .icon-bar {
+ margin-top: 4px;
+}
+@media (min-width: 768px) {
+ .navbar-toggle {
+ display: none;
+ }
+}
+.navbar-lang-btn .select2-container {
+ margin: 0 !important;
+}
+.img-circle {
+ border-radius: 50%;
+}
+
+.btn-default {
+ color: #333;
+ background-color: #fff;
+ border-color: #ccc;
+}
+.btn-default:focus,
+.btn-default.focus {
+ color: #333;
+ background-color: #e6e6e6;
+ border-color: #8c8c8c;
+}
+.btn-default:hover {
+ color: #333;
+ background-color: #e6e6e6;
+ border-color: #adadad;
+}
+.btn-default:active,
+.btn-default.active,
+.open > .dropdown-toggle.btn-default {
+ color: #333;
+ background-color: #e6e6e6;
+ background-image: none;
+ border-color: #adadad;
+}
+.btn-default:active:hover,
+.btn-default.active:hover,
+.open > .dropdown-toggle.btn-default:hover,
+.btn-default:active:focus,
+.btn-default.active:focus,
+.open > .dropdown-toggle.btn-default:focus,
+.btn-default:active.focus,
+.btn-default.active.focus,
+.open > .dropdown-toggle.btn-default.focus {
+ color: #333;
+ background-color: #d4d4d4;
+ border-color: #8c8c8c;
+}
+.btn-default.disabled:hover,
+.btn-default[disabled]:hover,
+fieldset[disabled] .btn-default:hover,
+.btn-default.disabled:focus,
+.btn-default[disabled]:focus,
+fieldset[disabled] .btn-default:focus,
+.btn-default.disabled.focus,
+.btn-default[disabled].focus,
+fieldset[disabled] .btn-default.focus {
+ background-color: #fff;
+ border-color: #ccc;
+}
+.btn-default .badge {
+ color: #fff;
+ background-color: #333;
+}
+.btn-primary {
+ color: #fff;
+ background-color: #337ab7;
+ border-color: #2e6da4;
+}
+.btn-primary:focus,
+.btn-primary.focus {
+ color: #fff;
+ background-color: #286090;
+ border-color: #122b40;
+}
+.btn-primary:hover {
+ color: #fff;
+ background-color: #286090;
+ border-color: #204d74;
+}
+.btn-primary:active,
+.btn-primary.active,
+.open > .dropdown-toggle.btn-primary {
+ color: #fff;
+ background-color: #286090;
+ background-image: none;
+ border-color: #204d74;
+}
+.btn-primary:active:hover,
+.btn-primary.active:hover,
+.open > .dropdown-toggle.btn-primary:hover,
+.btn-primary:active:focus,
+.btn-primary.active:focus,
+.open > .dropdown-toggle.btn-primary:focus,
+.btn-primary:active.focus,
+.btn-primary.active.focus,
+.open > .dropdown-toggle.btn-primary.focus {
+ color: #fff;
+ background-color: #204d74;
+ border-color: #122b40;
+}
+.btn-primary.disabled:hover,
+.btn-primary[disabled]:hover,
+fieldset[disabled] .btn-primary:hover,
+.btn-primary.disabled:focus,
+.btn-primary[disabled]:focus,
+fieldset[disabled] .btn-primary:focus,
+.btn-primary.disabled.focus,
+.btn-primary[disabled].focus,
+fieldset[disabled] .btn-primary.focus {
+ background-color: #337ab7;
+ border-color: #2e6da4;
+}
+.btn-primary .badge {
+ color: #337ab7;
+ background-color: #fff;
+}
+.btn-success {
+ color: #fff;
+ background-color: #5cb85c;
+ border-color: #4cae4c;
+}
+.btn-success:focus,
+.btn-success.focus {
+ color: #fff;
+ background-color: #449d44;
+ border-color: #255625;
+}
+.btn-success:hover {
+ color: #fff;
+ background-color: #449d44;
+ border-color: #398439;
+}
+.btn-success:active,
+.btn-success.active,
+.open > .dropdown-toggle.btn-success {
+ color: #fff;
+ background-color: #449d44;
+ background-image: none;
+ border-color: #398439;
+}
+.btn-success:active:hover,
+.btn-success.active:hover,
+.open > .dropdown-toggle.btn-success:hover,
+.btn-success:active:focus,
+.btn-success.active:focus,
+.open > .dropdown-toggle.btn-success:focus,
+.btn-success:active.focus,
+.btn-success.active.focus,
+.open > .dropdown-toggle.btn-success.focus {
+ color: #fff;
+ background-color: #398439;
+ border-color: #255625;
+}
+.btn-success.disabled:hover,
+.btn-success[disabled]:hover,
+fieldset[disabled] .btn-success:hover,
+.btn-success.disabled:focus,
+.btn-success[disabled]:focus,
+fieldset[disabled] .btn-success:focus,
+.btn-success.disabled.focus,
+.btn-success[disabled].focus,
+fieldset[disabled] .btn-success.focus {
+ background-color: #5cb85c;
+ border-color: #4cae4c;
+}
+.btn-success .badge {
+ color: #5cb85c;
+ background-color: #fff;
+}
+.btn-info {
+ color: #fff;
+ background-color: #5bc0de;
+ border-color: #46b8da;
+}
+.btn-info:focus,
+.btn-info.focus {
+ color: #fff;
+ background-color: #31b0d5;
+ border-color: #1b6d85;
+}
+.btn-info:hover {
+ color: #fff;
+ background-color: #31b0d5;
+ border-color: #269abc;
+}
+.btn-info:active,
+.btn-info.active,
+.open > .dropdown-toggle.btn-info {
+ color: #fff;
+ background-color: #31b0d5;
+ background-image: none;
+ border-color: #269abc;
+}
+.btn-info:active:hover,
+.btn-info.active:hover,
+.open > .dropdown-toggle.btn-info:hover,
+.btn-info:active:focus,
+.btn-info.active:focus,
+.open > .dropdown-toggle.btn-info:focus,
+.btn-info:active.focus,
+.btn-info.active.focus,
+.open > .dropdown-toggle.btn-info.focus {
+ color: #fff;
+ background-color: #269abc;
+ border-color: #1b6d85;
+}
+.btn-info.disabled:hover,
+.btn-info[disabled]:hover,
+fieldset[disabled] .btn-info:hover,
+.btn-info.disabled:focus,
+.btn-info[disabled]:focus,
+fieldset[disabled] .btn-info:focus,
+.btn-info.disabled.focus,
+.btn-info[disabled].focus,
+fieldset[disabled] .btn-info.focus {
+ background-color: #5bc0de;
+ border-color: #46b8da;
+}
+.btn-info .badge {
+ color: #5bc0de;
+ background-color: #fff;
+}
+.btn-warning {
+ color: #fff;
+ background-color: #f0ad4e;
+ border-color: #eea236;
+}
+.btn-warning:focus,
+.btn-warning.focus {
+ color: #fff;
+ background-color: #ec971f;
+ border-color: #985f0d;
+}
+.btn-warning:hover {
+ color: #fff;
+ background-color: #ec971f;
+ border-color: #d58512;
+}
+.btn-warning:active,
+.btn-warning.active,
+.open > .dropdown-toggle.btn-warning {
+ color: #fff;
+ background-color: #ec971f;
+ background-image: none;
+ border-color: #d58512;
+}
+.btn-warning:active:hover,
+.btn-warning.active:hover,
+.open > .dropdown-toggle.btn-warning:hover,
+.btn-warning:active:focus,
+.btn-warning.active:focus,
+.open > .dropdown-toggle.btn-warning:focus,
+.btn-warning:active.focus,
+.btn-warning.active.focus,
+.open > .dropdown-toggle.btn-warning.focus {
+ color: #fff;
+ background-color: #d58512;
+ border-color: #985f0d;
+}
+.btn-warning.disabled:hover,
+.btn-warning[disabled]:hover,
+fieldset[disabled] .btn-warning:hover,
+.btn-warning.disabled:focus,
+.btn-warning[disabled]:focus,
+fieldset[disabled] .btn-warning:focus,
+.btn-warning.disabled.focus,
+.btn-warning[disabled].focus,
+fieldset[disabled] .btn-warning.focus {
+ background-color: #f0ad4e;
+ border-color: #eea236;
+}
+.btn-warning .badge {
+ color: #f0ad4e;
+ background-color: #fff;
+}
+.btn-danger {
+ color: #fff;
+ background-color: #d9534f;
+ border-color: #d43f3a;
+}
+.btn-danger:focus,
+.btn-danger.focus {
+ color: #fff;
+ background-color: #c9302c;
+ border-color: #761c19;
+}
+.btn-danger:hover {
+ color: #fff;
+ background-color: #c9302c;
+ border-color: #ac2925;
+}
+.btn-danger:active,
+.btn-danger.active,
+.open > .dropdown-toggle.btn-danger {
+ color: #fff;
+ background-color: #c9302c;
+ background-image: none;
+ border-color: #ac2925;
+}
+.btn-danger:active:hover,
+.btn-danger.active:hover,
+.open > .dropdown-toggle.btn-danger:hover,
+.btn-danger:active:focus,
+.btn-danger.active:focus,
+.open > .dropdown-toggle.btn-danger:focus,
+.btn-danger:active.focus,
+.btn-danger.active.focus,
+.open > .dropdown-toggle.btn-danger.focus {
+ color: #fff;
+ background-color: #ac2925;
+ border-color: #761c19;
+}
+.btn-danger.disabled:hover,
+.btn-danger[disabled]:hover,
+fieldset[disabled] .btn-danger:hover,
+.btn-danger.disabled:focus,
+.btn-danger[disabled]:focus,
+fieldset[disabled] .btn-danger:focus,
+.btn-danger.disabled.focus,
+.btn-danger[disabled].focus,
+fieldset[disabled] .btn-danger.focus {
+ background-color: #d9534f;
+ border-color: #d43f3a;
+}
+.btn-danger .badge {
+ color: #d9534f;
+ background-color: #fff;
+}
+
+.panel {
+ margin-bottom: 20px;
+ background-color: #fff;
+ border: 1px solid transparent;
+ border-radius: 4px;
+ -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
+ box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
+}
+.panel-body {
+ padding: 15px;
+}
+.panel-heading {
+ padding: 10px 15px;
+ border-bottom: 1px solid transparent;
+ border-top-left-radius: 3px;
+ border-top-right-radius: 3px;
+}
+.panel-heading > .dropdown .dropdown-toggle {
+ color: inherit;
+}
+.panel-title {
+ margin-top: 0;
+ margin-bottom: 0;
+ font-size: 16px;
+ color: inherit;
+}
+.panel-title > a,
+.panel-title > small,
+.panel-title > .small,
+.panel-title > small > a,
+.panel-title > .small > a {
+ color: inherit;
+}
+.panel-footer {
+ padding: 10px 15px;
+ background-color: #f5f5f5;
+ border-top: 1px solid #ddd;
+ border-bottom-right-radius: 3px;
+ border-bottom-left-radius: 3px;
+}
+.panel > .list-group,
+.panel > .panel-collapse > .list-group {
+ margin-bottom: 0;
+}
+.panel > .list-group .list-group-item,
+.panel > .panel-collapse > .list-group .list-group-item {
+ border-width: 1px 0;
+ border-radius: 0;
+}
+.panel > .list-group:first-child .list-group-item:first-child,
+.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child {
+ border-top: 0;
+ border-top-left-radius: 3px;
+ border-top-right-radius: 3px;
+}
+.panel > .list-group:last-child .list-group-item:last-child,
+.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child {
+ border-bottom: 0;
+ border-bottom-right-radius: 3px;
+ border-bottom-left-radius: 3px;
+}
+.panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child {
+ border-top-left-radius: 0;
+ border-top-right-radius: 0;
+}
+.panel-heading + .list-group .list-group-item:first-child {
+ border-top-width: 0;
+}
+.list-group + .panel-footer {
+ border-top-width: 0;
+}
+.panel > .table,
+.panel > .table-responsive > .table,
+.panel > .panel-collapse > .table {
+ margin-bottom: 0;
+}
+.panel > .table caption,
+.panel > .table-responsive > .table caption,
+.panel > .panel-collapse > .table caption {
+ padding-right: 15px;
+ padding-left: 15px;
+}
+.panel > .table:first-child,
+.panel > .table-responsive:first-child > .table:first-child {
+ border-top-left-radius: 3px;
+ border-top-right-radius: 3px;
+}
+.panel > .table:first-child > thead:first-child > tr:first-child,
+.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child,
+.panel > .table:first-child > tbody:first-child > tr:first-child,
+.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child {
+ border-top-left-radius: 3px;
+ border-top-right-radius: 3px;
+}
+.panel > .table:first-child > thead:first-child > tr:first-child td:first-child,
+.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,
+.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,
+.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,
+.panel > .table:first-child > thead:first-child > tr:first-child th:first-child,
+.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,
+.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,
+.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {
+ border-top-left-radius: 3px;
+}
+.panel > .table:first-child > thead:first-child > tr:first-child td:last-child,
+.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,
+.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,
+.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,
+.panel > .table:first-child > thead:first-child > tr:first-child th:last-child,
+.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,
+.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,
+.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {
+ border-top-right-radius: 3px;
+}
+.panel > .table:last-child,
+.panel > .table-responsive:last-child > .table:last-child {
+ border-bottom-right-radius: 3px;
+ border-bottom-left-radius: 3px;
+}
+.panel > .table:last-child > tbody:last-child > tr:last-child,
+.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child,
+.panel > .table:last-child > tfoot:last-child > tr:last-child,
+.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child {
+ border-bottom-right-radius: 3px;
+ border-bottom-left-radius: 3px;
+}
+.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,
+.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,
+.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
+.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
+.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,
+.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,
+.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,
+.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {
+ border-bottom-left-radius: 3px;
+}
+.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,
+.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,
+.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
+.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
+.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,
+.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,
+.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,
+.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {
+ border-bottom-right-radius: 3px;
+}
+.panel > .panel-body + .table,
+.panel > .panel-body + .table-responsive,
+.panel > .table + .panel-body,
+.panel > .table-responsive + .panel-body {
+ border-top: 1px solid #ddd;
+}
+.panel > .table > tbody:first-child > tr:first-child th,
+.panel > .table > tbody:first-child > tr:first-child td {
+ border-top: 0;
+}
+.panel > .table-bordered,
+.panel > .table-responsive > .table-bordered {
+ border: 0;
+}
+.panel > .table-bordered > thead > tr > th:first-child,
+.panel > .table-responsive > .table-bordered > thead > tr > th:first-child,
+.panel > .table-bordered > tbody > tr > th:first-child,
+.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,
+.panel > .table-bordered > tfoot > tr > th:first-child,
+.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,
+.panel > .table-bordered > thead > tr > td:first-child,
+.panel > .table-responsive > .table-bordered > thead > tr > td:first-child,
+.panel > .table-bordered > tbody > tr > td:first-child,
+.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,
+.panel > .table-bordered > tfoot > tr > td:first-child,
+.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {
+ border-left: 0;
+}
+.panel > .table-bordered > thead > tr > th:last-child,
+.panel > .table-responsive > .table-bordered > thead > tr > th:last-child,
+.panel > .table-bordered > tbody > tr > th:last-child,
+.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,
+.panel > .table-bordered > tfoot > tr > th:last-child,
+.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,
+.panel > .table-bordered > thead > tr > td:last-child,
+.panel > .table-responsive > .table-bordered > thead > tr > td:last-child,
+.panel > .table-bordered > tbody > tr > td:last-child,
+.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,
+.panel > .table-bordered > tfoot > tr > td:last-child,
+.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {
+ border-right: 0;
+}
+.panel > .table-bordered > thead > tr:first-child > td,
+.panel > .table-responsive > .table-bordered > thead > tr:first-child > td,
+.panel > .table-bordered > tbody > tr:first-child > td,
+.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,
+.panel > .table-bordered > thead > tr:first-child > th,
+.panel > .table-responsive > .table-bordered > thead > tr:first-child > th,
+.panel > .table-bordered > tbody > tr:first-child > th,
+.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {
+ border-bottom: 0;
+}
+.panel > .table-bordered > tbody > tr:last-child > td,
+.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,
+.panel > .table-bordered > tfoot > tr:last-child > td,
+.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,
+.panel > .table-bordered > tbody > tr:last-child > th,
+.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,
+.panel > .table-bordered > tfoot > tr:last-child > th,
+.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {
+ border-bottom: 0;
+}
+.panel > .table-responsive {
+ margin-bottom: 0;
+ border: 0;
+}
+.panel-group {
+ margin-bottom: 20px;
+}
+.panel-group .panel {
+ margin-bottom: 0;
+ border-radius: 4px;
+}
+.panel-group .panel + .panel {
+ margin-top: 5px;
+}
+.panel-group .panel-heading {
+ border-bottom: 0;
+}
+.panel-group .panel-heading + .panel-collapse > .panel-body,
+.panel-group .panel-heading + .panel-collapse > .list-group {
+ border-top: 1px solid #ddd;
+}
+.panel-group .panel-footer {
+ border-top: 0;
+}
+.panel-group .panel-footer + .panel-collapse .panel-body {
+ border-bottom: 1px solid #ddd;
+}
+.panel-default {
+ border-color: #ddd;
+}
+.panel-default > .panel-heading {
+ color: #333333;
+ background-color: #f5f5f5;
+ border-color: #ddd;
+}
+.panel-default > .panel-heading + .panel-collapse > .panel-body {
+ border-top-color: #ddd;
+}
+.panel-default > .panel-heading .badge {
+ color: #f5f5f5;
+ background-color: #333333;
+}
+.panel-default > .panel-footer + .panel-collapse > .panel-body {
+ border-bottom-color: #ddd;
+}
+.panel-primary {
+ border-color: #337ab7;
+}
+.panel-primary > .panel-heading {
+ color: #fff;
+ background-color: #337ab7;
+ border-color: #337ab7;
+}
+.panel-primary > .panel-heading + .panel-collapse > .panel-body {
+ border-top-color: #337ab7;
+}
+.panel-primary > .panel-heading .badge {
+ color: #337ab7;
+ background-color: #fff;
+}
+.panel-primary > .panel-footer + .panel-collapse > .panel-body {
+ border-bottom-color: #337ab7;
+}
+.panel-success {
+ border-color: #d6e9c6;
+}
+.panel-success > .panel-heading {
+ color: #3c763d;
+ background-color: #dff0d8;
+ border-color: #d6e9c6;
+}
+.panel-success > .panel-heading + .panel-collapse > .panel-body {
+ border-top-color: #d6e9c6;
+}
+.panel-success > .panel-heading .badge {
+ color: #dff0d8;
+ background-color: #3c763d;
+}
+.panel-success > .panel-footer + .panel-collapse > .panel-body {
+ border-bottom-color: #d6e9c6;
+}
+.panel-info {
+ border-color: #bce8f1;
+}
+.panel-info > .panel-heading {
+ color: #31708f;
+ background-color: #d9edf7;
+ border-color: #bce8f1;
+}
+.panel-info > .panel-heading + .panel-collapse > .panel-body {
+ border-top-color: #bce8f1;
+}
+.panel-info > .panel-heading .badge {
+ color: #d9edf7;
+ background-color: #31708f;
+}
+.panel-info > .panel-footer + .panel-collapse > .panel-body {
+ border-bottom-color: #bce8f1;
+}
+.panel-warning {
+ border-color: #faebcc;
+}
+.panel-warning > .panel-heading {
+ color: #8a6d3b;
+ background-color: #fcf8e3;
+ border-color: #faebcc;
+}
+.panel-warning > .panel-heading + .panel-collapse > .panel-body {
+ border-top-color: #faebcc;
+}
+.panel-warning > .panel-heading .badge {
+ color: #fcf8e3;
+ background-color: #8a6d3b;
+}
+.panel-warning > .panel-footer + .panel-collapse > .panel-body {
+ border-bottom-color: #faebcc;
+}
+.panel-danger {
+ border-color: #ebccd1;
+}
+.panel-danger > .panel-heading {
+ color: #a94442;
+ background-color: #f2dede;
+ border-color: #ebccd1;
+}
+.panel-danger > .panel-heading + .panel-collapse > .panel-body {
+ border-top-color: #ebccd1;
+}
+.panel-danger > .panel-heading .badge {
+ color: #f2dede;
+ background-color: #a94442;
+}
+.panel-danger > .panel-footer + .panel-collapse > .panel-body {
+ border-bottom-color: #ebccd1;
+}
+
+
+.col-xs-1,
+.col-sm-1,
+.col-md-1,
+.col-lg-1,
+.col-xs-2,
+.col-sm-2,
+.col-md-2,
+.col-lg-2,
+.col-xs-3,
+.col-sm-3,
+.col-md-3,
+.col-lg-3,
+.col-xs-4,
+.col-sm-4,
+.col-md-4,
+.col-lg-4,
+.col-xs-5,
+.col-sm-5,
+.col-md-5,
+.col-lg-5,
+.col-xs-6,
+.col-sm-6,
+.col-md-6,
+.col-lg-6,
+.col-xs-7,
+.col-sm-7,
+.col-md-7,
+.col-lg-7,
+.col-xs-8,
+.col-sm-8,
+.col-md-8,
+.col-lg-8,
+.col-xs-9,
+.col-sm-9,
+.col-md-9,
+.col-lg-9,
+.col-xs-10,
+.col-sm-10,
+.col-md-10,
+.col-lg-10,
+.col-xs-11,
+.col-sm-11,
+.col-md-11,
+.col-lg-11,
+.col-xs-12,
+.col-sm-12,
+.col-md-12,
+.col-lg-12 {
+ position: relative;
+ min-height: 1px;
+ padding-right: 15px;
+ padding-left: 15px;
+}
+.col-xs-1,
+.col-xs-2,
+.col-xs-3,
+.col-xs-4,
+.col-xs-5,
+.col-xs-6,
+.col-xs-7,
+.col-xs-8,
+.col-xs-9,
+.col-xs-10,
+.col-xs-11,
+.col-xs-12 {
+ float: left;
+}
+.col-xs-12 {
+ width: 100%;
+}
+.col-xs-11 {
+ width: 91.66666667%;
+}
+.col-xs-10 {
+ width: 83.33333333%;
+}
+.col-xs-9 {
+ width: 75%;
+}
+.col-xs-8 {
+ width: 66.66666667%;
+}
+.col-xs-7 {
+ width: 58.33333333%;
+}
+.col-xs-6 {
+ width: 50%;
+}
+.col-xs-5 {
+ width: 41.66666667%;
+}
+.col-xs-4 {
+ width: 33.33333333%;
+}
+.col-xs-3 {
+ width: 25%;
+}
+.col-xs-2 {
+ width: 16.66666667%;
+}
+.col-xs-1 {
+ width: 8.33333333%;
+}
+.col-xs-pull-12 {
+ right: 100%;
+}
+.col-xs-pull-11 {
+ right: 91.66666667%;
+}
+.col-xs-pull-10 {
+ right: 83.33333333%;
+}
+.col-xs-pull-9 {
+ right: 75%;
+}
+.col-xs-pull-8 {
+ right: 66.66666667%;
+}
+.col-xs-pull-7 {
+ right: 58.33333333%;
+}
+.col-xs-pull-6 {
+ right: 50%;
+}
+.col-xs-pull-5 {
+ right: 41.66666667%;
+}
+.col-xs-pull-4 {
+ right: 33.33333333%;
+}
+.col-xs-pull-3 {
+ right: 25%;
+}
+.col-xs-pull-2 {
+ right: 16.66666667%;
+}
+.col-xs-pull-1 {
+ right: 8.33333333%;
+}
+.col-xs-pull-0 {
+ right: auto;
+}
+.col-xs-push-12 {
+ left: 100%;
+}
+.col-xs-push-11 {
+ left: 91.66666667%;
+}
+.col-xs-push-10 {
+ left: 83.33333333%;
+}
+.col-xs-push-9 {
+ left: 75%;
+}
+.col-xs-push-8 {
+ left: 66.66666667%;
+}
+.col-xs-push-7 {
+ left: 58.33333333%;
+}
+.col-xs-push-6 {
+ left: 50%;
+}
+.col-xs-push-5 {
+ left: 41.66666667%;
+}
+.col-xs-push-4 {
+ left: 33.33333333%;
+}
+.col-xs-push-3 {
+ left: 25%;
+}
+.col-xs-push-2 {
+ left: 16.66666667%;
+}
+.col-xs-push-1 {
+ left: 8.33333333%;
+}
+.col-xs-push-0 {
+ left: auto;
+}
+.col-xs-offset-12 {
+ margin-left: 100%;
+}
+.col-xs-offset-11 {
+ margin-left: 91.66666667%;
+}
+.col-xs-offset-10 {
+ margin-left: 83.33333333%;
+}
+.col-xs-offset-9 {
+ margin-left: 75%;
+}
+.col-xs-offset-8 {
+ margin-left: 66.66666667%;
+}
+.col-xs-offset-7 {
+ margin-left: 58.33333333%;
+}
+.col-xs-offset-6 {
+ margin-left: 50%;
+}
+.col-xs-offset-5 {
+ margin-left: 41.66666667%;
+}
+.col-xs-offset-4 {
+ margin-left: 33.33333333%;
+}
+.col-xs-offset-3 {
+ margin-left: 25%;
+}
+.col-xs-offset-2 {
+ margin-left: 16.66666667%;
+}
+.col-xs-offset-1 {
+ margin-left: 8.33333333%;
+}
+.col-xs-offset-0 {
+ margin-left: 0%;
+}
+@media (min-width: 768px) {
+ .col-sm-1,
+ .col-sm-2,
+ .col-sm-3,
+ .col-sm-4,
+ .col-sm-5,
+ .col-sm-6,
+ .col-sm-7,
+ .col-sm-8,
+ .col-sm-9,
+ .col-sm-10,
+ .col-sm-11,
+ .col-sm-12 {
+ float: left;
+ }
+ .col-sm-12 {
+ width: 100%;
+ }
+ .col-sm-11 {
+ width: 91.66666667%;
+ }
+ .col-sm-10 {
+ width: 83.33333333%;
+ }
+ .col-sm-9 {
+ width: 75%;
+ }
+ .col-sm-8 {
+ width: 66.66666667%;
+ }
+ .col-sm-7 {
+ width: 58.33333333%;
+ }
+ .col-sm-6 {
+ width: 50%;
+ }
+ .col-sm-5 {
+ width: 41.66666667%;
+ }
+ .col-sm-4 {
+ width: 33.33333333%;
+ }
+ .col-sm-3 {
+ width: 25%;
+ }
+ .col-sm-2 {
+ width: 16.66666667%;
+ }
+ .col-sm-1 {
+ width: 8.33333333%;
+ }
+ .col-sm-pull-12 {
+ right: 100%;
+ }
+ .col-sm-pull-11 {
+ right: 91.66666667%;
+ }
+ .col-sm-pull-10 {
+ right: 83.33333333%;
+ }
+ .col-sm-pull-9 {
+ right: 75%;
+ }
+ .col-sm-pull-8 {
+ right: 66.66666667%;
+ }
+ .col-sm-pull-7 {
+ right: 58.33333333%;
+ }
+ .col-sm-pull-6 {
+ right: 50%;
+ }
+ .col-sm-pull-5 {
+ right: 41.66666667%;
+ }
+ .col-sm-pull-4 {
+ right: 33.33333333%;
+ }
+ .col-sm-pull-3 {
+ right: 25%;
+ }
+ .col-sm-pull-2 {
+ right: 16.66666667%;
+ }
+ .col-sm-pull-1 {
+ right: 8.33333333%;
+ }
+ .col-sm-pull-0 {
+ right: auto;
+ }
+ .col-sm-push-12 {
+ left: 100%;
+ }
+ .col-sm-push-11 {
+ left: 91.66666667%;
+ }
+ .col-sm-push-10 {
+ left: 83.33333333%;
+ }
+ .col-sm-push-9 {
+ left: 75%;
+ }
+ .col-sm-push-8 {
+ left: 66.66666667%;
+ }
+ .col-sm-push-7 {
+ left: 58.33333333%;
+ }
+ .col-sm-push-6 {
+ left: 50%;
+ }
+ .col-sm-push-5 {
+ left: 41.66666667%;
+ }
+ .col-sm-push-4 {
+ left: 33.33333333%;
+ }
+ .col-sm-push-3 {
+ left: 25%;
+ }
+ .col-sm-push-2 {
+ left: 16.66666667%;
+ }
+ .col-sm-push-1 {
+ left: 8.33333333%;
+ }
+ .col-sm-push-0 {
+ left: auto;
+ }
+ .col-sm-offset-12 {
+ margin-left: 100%;
+ }
+ .col-sm-offset-11 {
+ margin-left: 91.66666667%;
+ }
+ .col-sm-offset-10 {
+ margin-left: 83.33333333%;
+ }
+ .col-sm-offset-9 {
+ margin-left: 75%;
+ }
+ .col-sm-offset-8 {
+ margin-left: 66.66666667%;
+ }
+ .col-sm-offset-7 {
+ margin-left: 58.33333333%;
+ }
+ .col-sm-offset-6 {
+ margin-left: 50%;
+ }
+ .col-sm-offset-5 {
+ margin-left: 41.66666667%;
+ }
+ .col-sm-offset-4 {
+ margin-left: 33.33333333%;
+ }
+ .col-sm-offset-3 {
+ margin-left: 25%;
+ }
+ .col-sm-offset-2 {
+ margin-left: 16.66666667%;
+ }
+ .col-sm-offset-1 {
+ margin-left: 8.33333333%;
+ }
+ .col-sm-offset-0 {
+ margin-left: 0%;
+ }
+}
+@media (min-width: 992px) {
+ .col-md-1,
+ .col-md-2,
+ .col-md-3,
+ .col-md-4,
+ .col-md-5,
+ .col-md-6,
+ .col-md-7,
+ .col-md-8,
+ .col-md-9,
+ .col-md-10,
+ .col-md-11,
+ .col-md-12 {
+ float: left;
+ }
+ .col-md-12 {
+ width: 100%;
+ }
+ .col-md-11 {
+ width: 91.66666667%;
+ }
+ .col-md-10 {
+ width: 83.33333333%;
+ }
+ .col-md-9 {
+ width: 75%;
+ }
+ .col-md-8 {
+ width: 66.66666667%;
+ }
+ .col-md-7 {
+ width: 58.33333333%;
+ }
+ .col-md-6 {
+ width: 50%;
+ }
+ .col-md-5 {
+ width: 41.66666667%;
+ }
+ .col-md-4 {
+ width: 33.33333333%;
+ }
+ .col-md-3 {
+ width: 25%;
+ }
+ .col-md-2 {
+ width: 16.66666667%;
+ }
+ .col-md-1 {
+ width: 8.33333333%;
+ }
+ .col-md-pull-12 {
+ right: 100%;
+ }
+ .col-md-pull-11 {
+ right: 91.66666667%;
+ }
+ .col-md-pull-10 {
+ right: 83.33333333%;
+ }
+ .col-md-pull-9 {
+ right: 75%;
+ }
+ .col-md-pull-8 {
+ right: 66.66666667%;
+ }
+ .col-md-pull-7 {
+ right: 58.33333333%;
+ }
+ .col-md-pull-6 {
+ right: 50%;
+ }
+ .col-md-pull-5 {
+ right: 41.66666667%;
+ }
+ .col-md-pull-4 {
+ right: 33.33333333%;
+ }
+ .col-md-pull-3 {
+ right: 25%;
+ }
+ .col-md-pull-2 {
+ right: 16.66666667%;
+ }
+ .col-md-pull-1 {
+ right: 8.33333333%;
+ }
+ .col-md-pull-0 {
+ right: auto;
+ }
+ .col-md-push-12 {
+ left: 100%;
+ }
+ .col-md-push-11 {
+ left: 91.66666667%;
+ }
+ .col-md-push-10 {
+ left: 83.33333333%;
+ }
+ .col-md-push-9 {
+ left: 75%;
+ }
+ .col-md-push-8 {
+ left: 66.66666667%;
+ }
+ .col-md-push-7 {
+ left: 58.33333333%;
+ }
+ .col-md-push-6 {
+ left: 50%;
+ }
+ .col-md-push-5 {
+ left: 41.66666667%;
+ }
+ .col-md-push-4 {
+ left: 33.33333333%;
+ }
+ .col-md-push-3 {
+ left: 25%;
+ }
+ .col-md-push-2 {
+ left: 16.66666667%;
+ }
+ .col-md-push-1 {
+ left: 8.33333333%;
+ }
+ .col-md-push-0 {
+ left: auto;
+ }
+ .col-md-offset-12 {
+ margin-left: 100%;
+ }
+ .col-md-offset-11 {
+ margin-left: 91.66666667%;
+ }
+ .col-md-offset-10 {
+ margin-left: 83.33333333%;
+ }
+ .col-md-offset-9 {
+ margin-left: 75%;
+ }
+ .col-md-offset-8 {
+ margin-left: 66.66666667%;
+ }
+ .col-md-offset-7 {
+ margin-left: 58.33333333%;
+ }
+ .col-md-offset-6 {
+ margin-left: 50%;
+ }
+ .col-md-offset-5 {
+ margin-left: 41.66666667%;
+ }
+ .col-md-offset-4 {
+ margin-left: 33.33333333%;
+ }
+ .col-md-offset-3 {
+ margin-left: 25%;
+ }
+ .col-md-offset-2 {
+ margin-left: 16.66666667%;
+ }
+ .col-md-offset-1 {
+ margin-left: 8.33333333%;
+ }
+ .col-md-offset-0 {
+ margin-left: 0%;
+ }
+}
+@media (min-width: 1200px) {
+ .col-lg-1,
+ .col-lg-2,
+ .col-lg-3,
+ .col-lg-4,
+ .col-lg-5,
+ .col-lg-6,
+ .col-lg-7,
+ .col-lg-8,
+ .col-lg-9,
+ .col-lg-10,
+ .col-lg-11,
+ .col-lg-12 {
+ float: left;
+ }
+ .col-lg-12 {
+ width: 100%;
+ }
+ .col-lg-11 {
+ width: 91.66666667%;
+ }
+ .col-lg-10 {
+ width: 83.33333333%;
+ }
+ .col-lg-9 {
+ width: 75%;
+ }
+ .col-lg-8 {
+ width: 66.66666667%;
+ }
+ .col-lg-7 {
+ width: 58.33333333%;
+ }
+ .col-lg-6 {
+ width: 50%;
+ }
+ .col-lg-5 {
+ width: 41.66666667%;
+ }
+ .col-lg-4 {
+ width: 33.33333333%;
+ }
+ .col-lg-3 {
+ width: 25%;
+ }
+ .col-lg-2 {
+ width: 16.66666667%;
+ }
+ .col-lg-1 {
+ width: 8.33333333%;
+ }
+ .col-lg-pull-12 {
+ right: 100%;
+ }
+ .col-lg-pull-11 {
+ right: 91.66666667%;
+ }
+ .col-lg-pull-10 {
+ right: 83.33333333%;
+ }
+ .col-lg-pull-9 {
+ right: 75%;
+ }
+ .col-lg-pull-8 {
+ right: 66.66666667%;
+ }
+ .col-lg-pull-7 {
+ right: 58.33333333%;
+ }
+ .col-lg-pull-6 {
+ right: 50%;
+ }
+ .col-lg-pull-5 {
+ right: 41.66666667%;
+ }
+ .col-lg-pull-4 {
+ right: 33.33333333%;
+ }
+ .col-lg-pull-3 {
+ right: 25%;
+ }
+ .col-lg-pull-2 {
+ right: 16.66666667%;
+ }
+ .col-lg-pull-1 {
+ right: 8.33333333%;
+ }
+ .col-lg-pull-0 {
+ right: auto;
+ }
+ .col-lg-push-12 {
+ left: 100%;
+ }
+ .col-lg-push-11 {
+ left: 91.66666667%;
+ }
+ .col-lg-push-10 {
+ left: 83.33333333%;
+ }
+ .col-lg-push-9 {
+ left: 75%;
+ }
+ .col-lg-push-8 {
+ left: 66.66666667%;
+ }
+ .col-lg-push-7 {
+ left: 58.33333333%;
+ }
+ .col-lg-push-6 {
+ left: 50%;
+ }
+ .col-lg-push-5 {
+ left: 41.66666667%;
+ }
+ .col-lg-push-4 {
+ left: 33.33333333%;
+ }
+ .col-lg-push-3 {
+ left: 25%;
+ }
+ .col-lg-push-2 {
+ left: 16.66666667%;
+ }
+ .col-lg-push-1 {
+ left: 8.33333333%;
+ }
+ .col-lg-push-0 {
+ left: auto;
+ }
+ .col-lg-offset-12 {
+ margin-left: 100%;
+ }
+ .col-lg-offset-11 {
+ margin-left: 91.66666667%;
+ }
+ .col-lg-offset-10 {
+ margin-left: 83.33333333%;
+ }
+ .col-lg-offset-9 {
+ margin-left: 75%;
+ }
+ .col-lg-offset-8 {
+ margin-left: 66.66666667%;
+ }
+ .col-lg-offset-7 {
+ margin-left: 58.33333333%;
+ }
+ .col-lg-offset-6 {
+ margin-left: 50%;
+ }
+ .col-lg-offset-5 {
+ margin-left: 41.66666667%;
+ }
+ .col-lg-offset-4 {
+ margin-left: 33.33333333%;
+ }
+ .col-lg-offset-3 {
+ margin-left: 25%;
+ }
+ .col-lg-offset-2 {
+ margin-left: 16.66666667%;
+ }
+ .col-lg-offset-1 {
+ margin-left: 8.33333333%;
+ }
+ .col-lg-offset-0 {
+ margin-left: 0%;
+ }
+}
+
+
+.btn-lg,
+.btn-group-lg > .btn {
+ padding: 10px 16px;
+ font-size: 18px;
+ line-height: 1.3333333;
+ border-radius: 6px;
+}
+.btn-sm,
+.btn-group-sm > .btn {
+ padding: 5px 10px;
+ font-size: 12px;
+ line-height: 1.5;
+ border-radius: 3px;
+}
+.btn-xs,
+.btn-group-xs > .btn {
+ padding: 1px 5px;
+ font-size: 12px;
+ line-height: 1.5;
+ border-radius: 3px;
+}
+.btn-block {
+ display: block;
+ width: 100%;
+}
+.btn-block + .btn-block {
+ margin-top: 5px;
+}
+#sideBarContainer > ul > li{
+ width: 100%;
+}
+
+.pull-right {
+ float: right !important;
+}
+.pull-left {
+ float: left !important;
+}
+#sideBarContainer > ul > li > ul{
+ display: block;
+}
+#sideBarContainer .nav > li > a{
+ position: relative;
+ display: block;
+ padding: 10px 15px;
+}
+
+#sideBarContainer .nav > li > a:hover,
+#sideBarContainer .nav > li > a:focus {
+ text-decoration: none;
+ background-color: #eeeeee;
+}
+
+a {
+ text-decoration: none;
+ text-decoration-line: none;
+ text-decoration-thickness: initial;
+ text-decoration-style: initial;
+ text-decoration-color: initial;
+}
+
+#sideBarContainer > ul > li > ul.dropdown-menu {
+ display: none;
+}
+#sideBarContainer > ul > li > ul.dropdown-menu a {
+ margin: 0 20px;
}
\ No newline at end of file
diff --git a/view/channelBody.php b/view/channelBody.php
index 51435a8332cc..fd0986089898 100644
--- a/view/channelBody.php
+++ b/view/channelBody.php
@@ -24,10 +24,10 @@
$rowCount = 25;
$_REQUEST['rowCount'] = $rowCount;
-if(empty($channelPassword) && !$isMyChannel){
+if (empty($channelPassword) && !$isMyChannel) {
$status = 'a';
$showUnlisted = false;
-}else{
+} else {
$status = 'viewable';
$showUnlisted = true;
}
@@ -103,17 +103,17 @@
doNotShowTopBannerOnChannel)) {
- if(isMobile()){
+ if (isMobile()) {
$relativePath = $user->getBackgroundURL(User::$channel_artDesktopMin);
- }else{
+ } else {
$relativePath = $user->getBackgroundURL(User::$channel_artDesktopMax);
}
?>
-
-
+
+
+
showChannelHomeTab) {
- if (!empty($_GET['current'])) { // means you are paging the Videos tab
- $active = '';
- } ?>
+ if ($advancedCustomUser->showChannelHomeTab) {
+ if (!empty($_GET['current'])) { // means you are paging the Videos tab
+ $active = '';
+ }
+ ?>
-
+
showChannelVideosTab) {
- if (!empty($_GET['current'])) { // means you are paging the Videos tab
- $active = "active";
- } ?>
+ }
+ if ($advancedCustomUser->showChannelVideosTab) {
+ if (!empty($_GET['current'])) { // means you are paging the Videos tab
+ $active = "active";
+ }
+ ?>
-
+
showChannelProgramsTab && !empty($palyListsObj)) {
- $totalPrograms = PlayList::getAllFromUserLight($user_id, true, false, 0, true, true);
- if ($totalPrograms) {
- ?>
+ }
+ if ($advancedCustomUser->showChannelProgramsTab && !empty($palyListsObj)) {
+ $totalPrograms = PlayList::getAllFromUserLight($user_id, true, false, 0, true, true);
+ if ($totalPrograms) {
+ ?>
- name)); ?>
+ name)); ?>
+ }
+ }
+ ?>
showChannelHomeTab) {
- if (!empty($_GET['current'])) { // means you are paging the Videos tab
- $active = '';
- }
- $obj = AVideoPlugin::getObjectData("YouPHPFlix2"); ?>
-
+ if ($advancedCustomUser->showChannelHomeTab) {
+ if (!empty($_GET['current'])) { // means you are paging the Videos tab
+ $active = '';
+ }
+ $obj = AVideoPlugin::getObjectData("YouPHPFlix2");
+ ?>
+
BigVideo = true;
- $obj->PlayList = false;
- $obj->Channels = false;
- $obj->Trending = false;
- $obj->pageDots = false;
- $obj->TrendingAutoPlay = false;
- $obj->maxVideos = 12;
- $obj->Suggested = false;
- $obj->paidOnlyLabelOverPoster = false;
- $obj->DateAdded = true;
- $obj->DateAddedAutoPlay = true;
- $obj->MostPopular = false;
- $obj->MostWatched = false;
- $obj->SortByName = false;
- $obj->Categories = false;
- $obj->playVideoOnFullscreen = false;
- $obj->titleLabel = true;
- $obj->RemoveBigVideoDescription = true;
+ $obj->PlayList = false;
+ $obj->Channels = false;
+ $obj->Trending = false;
+ $obj->pageDots = false;
+ $obj->TrendingAutoPlay = false;
+ $obj->maxVideos = 12;
+ $obj->Suggested = false;
+ $obj->paidOnlyLabelOverPoster = false;
+ $obj->DateAdded = true;
+ $obj->DateAddedAutoPlay = true;
+ $obj->MostPopular = false;
+ $obj->MostWatched = false;
+ $obj->SortByName = false;
+ $obj->Categories = false;
+ $obj->playVideoOnFullscreen = false;
+ $obj->titleLabel = true;
+ $obj->RemoveBigVideoDescription = true;
- include $global['systemRootPath'] . 'plugin/YouPHPFlix2/view/modeFlixBody.php'; ?>
+ include $global['systemRootPath'] . 'plugin/YouPHPFlix2/view/modeFlixBody.php';
+ ?>
showChannelVideosTab) {
- if (!empty($_GET['current'])) { // means you are paging the Videos tab
- $active = "active fade in";
- } ?>
+ }
+ if ($advancedCustomUser->showChannelVideosTab) {
+ if (!empty($_GET['current'])) { // means you are paging the Videos tab
+ $active = "active fade in";
+ }
+ ?>
@@ -255,13 +266,14 @@
-
+
+ echo AVideoPlugin::getChannelButton();
+ ?>
Description = false;
include $global['systemRootPath'] . 'plugin/Gallery/view/BigVideo.php';
unset($uploadedVideos[0]);
- } ?>
+ }
+ ?>
+ createGallerySection($uploadedVideos, "", $get);
+ TimeLogEnd($timeLog, __LINE__);
+ ?>
+ }
+ if (!empty($totalPrograms)) {
+ ?>
@@ -301,12 +314,11 @@
name); ?>
-
+
-
+
+ }
+ ?>
diff --git a/view/css/custom/cyborg.css b/view/css/custom/cyborg.css
index befa65c3b544..b607bc22faf0 100644
--- a/view/css/custom/cyborg.css
+++ b/view/css/custom/cyborg.css
@@ -1,56 +1,60 @@
-@import url("https://fonts.googleapis.com/css?family=Roboto:400,700");/*!
- * bootswatch v3.3.7
- * Homepage: http://bootswatch.com
- * Copyright 2012-2017 Thomas Park
- * Licensed under MIT
- * Based on Bootstrap
-*//*!
- * Bootstrap v3.3.7 (http://getbootstrap.com)
- * Copyright 2011-2016 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,*:before,*:after{background:transparent !important;color:#000 !important;-webkit-box-shadow:none !important;box-shadow:none !important;text-shadow:none !important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100% !important}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000 !important}.label{border:1px solid #000}.table{border-collapse:collapse !important}.table td,.table th{background-color:#fff !important}.table-bordered th,.table-bordered td{border:1px solid #ddd !important}}@font-face{font-family:'Glyphicons Halflings';src:url('../fonts/glyphicons-halflings-regular.eot');src:url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'),url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'),url('../fonts/glyphicons-halflings-regular.woff') format('woff'),url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'),url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\002a"}.glyphicon-plus:before{content:"\002b"}.glyphicon-euro:before,.glyphicon-eur:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#888888;background-color:#060606}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#2a9fd6;text-decoration:none}a:hover,a:focus{color:#2a9fd6;text-decoration:underline}a:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive,.thumbnail>img,.thumbnail a>img,.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{padding:4px;line-height:1.42857143;background-color:#282828;border:1px solid #282828;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #282828}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role="button"]{cursor:pointer}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:500;line-height:1.1;color:#ffffff}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:normal;line-height:1;color:#888888}h1,.h1,h2,.h2,h3,.h3{margin-top:20px;margin-bottom:10px}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:10px;margin-bottom:10px}h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small{font-size:75%}h1,.h1{font-size:56px}h2,.h2{font-size:45px}h3,.h3{font-size:34px}h4,.h4{font-size:24px}h5,.h5{font-size:20px}h6,.h6{font-size:16px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}small,.small{font-size:85%}mark,.mark{background-color:#ff8800;padding:.2em}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#888888}.text-primary{color:#2a9fd6}a.text-primary:hover,a.text-primary:focus{color:#2180ac}.text-success{color:#ffffff}a.text-success:hover,a.text-success:focus{color:#e6e6e6}.text-info{color:#ffffff}a.text-info:hover,a.text-info:focus{color:#e6e6e6}.text-warning{color:#ffffff}a.text-warning:hover,a.text-warning:focus{color:#e6e6e6}.text-danger{color:#ffffff}a.text-danger:hover,a.text-danger:focus{color:#e6e6e6}.bg-primary{color:#fff;background-color:#2a9fd6}a.bg-primary:hover,a.bg-primary:focus{background-color:#2180ac}.bg-success{background-color:#77b300}a.bg-success:hover,a.bg-success:focus{background-color:#558000}.bg-info{background-color:#9933cc}a.bg-info:hover,a.bg-info:focus{background-color:#7a29a3}.bg-warning{background-color:#ff8800}a.bg-warning:hover,a.bg-warning:focus{background-color:#cc6d00}.bg-danger{background-color:#cc0000}a.bg-danger:hover,a.bg-danger:focus{background-color:#990000}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #282828}ul,ol{margin-top:0;margin-bottom:10px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none;margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dl{margin-top:0;margin-bottom:20px}dt,dd{line-height:1.42857143}dt{font-weight:bold}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #888888}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #282828}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857143;color:#555555}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #282828;border-left:0;text-align:right}.blockquote-reverse footer:before,blockquote.pull-right footer:before,.blockquote-reverse small:before,blockquote.pull-right small:before,.blockquote-reverse .small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,blockquote.pull-right footer:after,.blockquote-reverse small:after,blockquote.pull-right small:after,.blockquote-reverse .small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#ffffff;background-color:#333333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25)}kbd kbd{padding:0;font-size:100%;font-weight:bold;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;word-break:break-all;word-wrap:break-word;color:#282828;background-color:#f5f5f5;border:1px solid #cccccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.row{margin-left:-15px;margin-right:-15px}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0%}@media (min-width:768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0%}}@media (min-width:992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0%}}@media (min-width:1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0%}}table{background-color:#181818}caption{padding-top:8px;padding-bottom:8px;color:#888888;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #282828}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #282828}.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #282828}.table .table{background-color:#060606}.table-condensed>thead>tr>th,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #282828}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #282828}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#080808}.table-hover>tbody>tr:hover{background-color:#282828}table col[class*="col-"]{position:static;float:none;display:table-column}table td[class*="col-"],table th[class*="col-"]{position:static;float:none;display:table-cell}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#282828}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr.active:hover>th{background-color:#1b1b1b}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#77b300}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr.success:hover>th{background-color:#669a00}.table>thead>tr>td.info,.table>tbody>tr>td.info,.table>tfoot>tr>td.info,.table>thead>tr>th.info,.table>tbody>tr>th.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>tbody>tr.info>td,.table>tfoot>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr.info>th,.table>tfoot>tr.info>th{background-color:#9933cc}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr.info:hover>th{background-color:#8a2eb8}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#ff8800}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr.warning:hover>th{background-color:#e67a00}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#cc0000}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr.danger:hover>th{background-color:#b30000}.table-responsive{overflow-x:auto;min-height:0.01%}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #282828}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{padding:0;margin:0;border:0;min-width:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#888888;border:0;border-bottom:1px solid #282828}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:bold}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type="file"]{display:block}input[type="range"]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:9px;font-size:14px;line-height:1.42857143;color:#888888}.form-control{display:block;width:100%;height:38px;padding:8px 12px;font-size:14px;line-height:1.42857143;color:#888888;background-color:#ffffff;background-image:none;border:1px solid #282828;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6)}.form-control::-moz-placeholder{color:#888888;opacity:1}.form-control:-ms-input-placeholder{color:#888888}.form-control::-webkit-input-placeholder{color:#888888}.form-control::-ms-expand{border:0;background-color:transparent}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#adafae;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}input[type="search"]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type="date"].form-control,input[type="time"].form-control,input[type="datetime-local"].form-control,input[type="month"].form-control{line-height:38px}input[type="date"].input-sm,input[type="time"].input-sm,input[type="datetime-local"].input-sm,input[type="month"].input-sm,.input-group-sm input[type="date"],.input-group-sm input[type="time"],.input-group-sm input[type="datetime-local"],.input-group-sm input[type="month"]{line-height:30px}input[type="date"].input-lg,input[type="time"].input-lg,input[type="datetime-local"].input-lg,input[type="month"].input-lg,.input-group-lg input[type="date"],.input-group-lg input[type="time"],.input-group-lg input[type="datetime-local"],.input-group-lg input[type="month"]{line-height:54px}}.form-group{margin-bottom:15px}.radio,.checkbox{position:relative;display:block;margin-top:10px;margin-bottom:10px}.radio label,.checkbox label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:normal;cursor:pointer}.radio input[type="radio"],.radio-inline input[type="radio"],.checkbox input[type="checkbox"],.checkbox-inline input[type="checkbox"]{position:absolute;margin-left:-20px;margin-top:4px \9}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:normal;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type="radio"][disabled],input[type="checkbox"][disabled],input[type="radio"].disabled,input[type="checkbox"].disabled,fieldset[disabled] input[type="radio"],fieldset[disabled] input[type="checkbox"]{cursor:not-allowed}.radio-inline.disabled,.checkbox-inline.disabled,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.radio.disabled label,.checkbox.disabled label,fieldset[disabled] .radio label,fieldset[disabled] .checkbox label{cursor:not-allowed}.form-control-static{padding-top:9px;padding-bottom:9px;margin-bottom:0;min-height:34px}.form-control-static.input-lg,.form-control-static.input-sm{padding-left:0;padding-right:0}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}textarea.input-sm,select[multiple].input-sm{height:auto}.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm textarea.form-control,.form-group-sm select[multiple].form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}.input-lg{height:54px;padding:14px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-lg{height:54px;line-height:54px}textarea.input-lg,select[multiple].input-lg{height:auto}.form-group-lg .form-control{height:54px;padding:14px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.form-group-lg select.form-control{height:54px;line-height:54px}.form-group-lg textarea.form-control,.form-group-lg select[multiple].form-control{height:auto}.form-group-lg .form-control-static{height:54px;min-height:38px;padding:15px 16px;font-size:18px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:47.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:38px;height:38px;line-height:38px;text-align:center;pointer-events:none}.input-lg+.form-control-feedback,.input-group-lg+.form-control-feedback,.form-group-lg .form-control+.form-control-feedback{width:54px;height:54px;line-height:54px}.input-sm+.form-control-feedback,.input-group-sm+.form-control-feedback,.form-group-sm .form-control+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label{color:#ffffff}.has-success .form-control{border-color:#ffffff;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-success .form-control:focus{border-color:#e6e6e6;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff}.has-success .input-group-addon{color:#ffffff;border-color:#ffffff;background-color:#77b300}.has-success .form-control-feedback{color:#ffffff}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label{color:#ffffff}.has-warning .form-control{border-color:#ffffff;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-warning .form-control:focus{border-color:#e6e6e6;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff}.has-warning .input-group-addon{color:#ffffff;border-color:#ffffff;background-color:#ff8800}.has-warning .form-control-feedback{color:#ffffff}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label{color:#ffffff}.has-error .form-control{border-color:#ffffff;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-error .form-control:focus{border-color:#e6e6e6;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff}.has-error .input-group-addon{color:#ffffff;border-color:#ffffff;background-color:#cc0000}.has-error .form-control-feedback{color:#ffffff}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#c8c8c8}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn,.form-inline .input-group .form-control{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .radio label,.form-inline .checkbox label{padding-left:0}.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{margin-top:0;margin-bottom:0;padding-top:9px}.form-horizontal .radio,.form-horizontal .checkbox{min-height:29px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}@media (min-width:768px){.form-horizontal .control-label{text-align:right;margin-bottom:0;padding-top:9px}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:15px;font-size:18px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:8px 12px;font-size:14px;line-height:1.42857143;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn:focus,.btn:active:focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn.active.focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus,.btn.focus{color:#ffffff;text-decoration:none}.btn:active,.btn.active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;opacity:0.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#ffffff;background-color:#424242;border-color:#424242}.btn-default:focus,.btn-default.focus{color:#ffffff;background-color:#282828;border-color:#020202}.btn-default:hover{color:#ffffff;background-color:#282828;border-color:#232323}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{color:#ffffff;background-color:#282828;border-color:#232323}.btn-default:active:hover,.btn-default.active:hover,.open>.dropdown-toggle.btn-default:hover,.btn-default:active:focus,.btn-default.active:focus,.open>.dropdown-toggle.btn-default:focus,.btn-default:active.focus,.btn-default.active.focus,.open>.dropdown-toggle.btn-default.focus{color:#ffffff;background-color:#161616;border-color:#020202}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled.focus,.btn-default[disabled].focus,fieldset[disabled] .btn-default.focus{background-color:#424242;border-color:#424242}.btn-default .badge{color:#424242;background-color:#ffffff}.btn-primary{color:#ffffff;background-color:#2a9fd6;border-color:#2a9fd6}.btn-primary:focus,.btn-primary.focus{color:#ffffff;background-color:#2180ac;border-color:#15506c}.btn-primary:hover{color:#ffffff;background-color:#2180ac;border-color:#1f79a3}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{color:#ffffff;background-color:#2180ac;border-color:#1f79a3}.btn-primary:active:hover,.btn-primary.active:hover,.open>.dropdown-toggle.btn-primary:hover,.btn-primary:active:focus,.btn-primary.active:focus,.open>.dropdown-toggle.btn-primary:focus,.btn-primary:active.focus,.btn-primary.active.focus,.open>.dropdown-toggle.btn-primary.focus{color:#ffffff;background-color:#1b698e;border-color:#15506c}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled.focus,.btn-primary[disabled].focus,fieldset[disabled] .btn-primary.focus{background-color:#2a9fd6;border-color:#2a9fd6}.btn-primary .badge{color:#2a9fd6;background-color:#ffffff}.btn-success{color:#ffffff;background-color:#77b300;border-color:#77b300}.btn-success:focus,.btn-success.focus{color:#ffffff;background-color:#558000;border-color:#223300}.btn-success:hover{color:#ffffff;background-color:#558000;border-color:#4e7600}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{color:#ffffff;background-color:#558000;border-color:#4e7600}.btn-success:active:hover,.btn-success.active:hover,.open>.dropdown-toggle.btn-success:hover,.btn-success:active:focus,.btn-success.active:focus,.open>.dropdown-toggle.btn-success:focus,.btn-success:active.focus,.btn-success.active.focus,.open>.dropdown-toggle.btn-success.focus{color:#ffffff;background-color:#3d5c00;border-color:#223300}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled.focus,.btn-success[disabled].focus,fieldset[disabled] .btn-success.focus{background-color:#77b300;border-color:#77b300}.btn-success .badge{color:#77b300;background-color:#ffffff}.btn-info{color:#ffffff;background-color:#9933cc;border-color:#9933cc}.btn-info:focus,.btn-info.focus{color:#ffffff;background-color:#7a29a3;border-color:#4c1966}.btn-info:hover{color:#ffffff;background-color:#7a29a3;border-color:#74279b}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{color:#ffffff;background-color:#7a29a3;border-color:#74279b}.btn-info:active:hover,.btn-info.active:hover,.open>.dropdown-toggle.btn-info:hover,.btn-info:active:focus,.btn-info.active:focus,.open>.dropdown-toggle.btn-info:focus,.btn-info:active.focus,.btn-info.active.focus,.open>.dropdown-toggle.btn-info.focus{color:#ffffff;background-color:#652287;border-color:#4c1966}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled.focus,.btn-info[disabled].focus,fieldset[disabled] .btn-info.focus{background-color:#9933cc;border-color:#9933cc}.btn-info .badge{color:#9933cc;background-color:#ffffff}.btn-warning{color:#ffffff;background-color:#ff8800;border-color:#ff8800}.btn-warning:focus,.btn-warning.focus{color:#ffffff;background-color:#cc6d00;border-color:#804400}.btn-warning:hover{color:#ffffff;background-color:#cc6d00;border-color:#c26700}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{color:#ffffff;background-color:#cc6d00;border-color:#c26700}.btn-warning:active:hover,.btn-warning.active:hover,.open>.dropdown-toggle.btn-warning:hover,.btn-warning:active:focus,.btn-warning.active:focus,.open>.dropdown-toggle.btn-warning:focus,.btn-warning:active.focus,.btn-warning.active.focus,.open>.dropdown-toggle.btn-warning.focus{color:#ffffff;background-color:#a85a00;border-color:#804400}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled.focus,.btn-warning[disabled].focus,fieldset[disabled] .btn-warning.focus{background-color:#ff8800;border-color:#ff8800}.btn-warning .badge{color:#ff8800;background-color:#ffffff}.btn-danger{color:#ffffff;background-color:#cc0000;border-color:#cc0000}.btn-danger:focus,.btn-danger.focus{color:#ffffff;background-color:#990000;border-color:#4d0000}.btn-danger:hover{color:#ffffff;background-color:#990000;border-color:#8f0000}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{color:#ffffff;background-color:#990000;border-color:#8f0000}.btn-danger:active:hover,.btn-danger.active:hover,.open>.dropdown-toggle.btn-danger:hover,.btn-danger:active:focus,.btn-danger.active:focus,.open>.dropdown-toggle.btn-danger:focus,.btn-danger:active.focus,.btn-danger.active.focus,.open>.dropdown-toggle.btn-danger.focus{color:#ffffff;background-color:#750000;border-color:#4d0000}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled.focus,.btn-danger[disabled].focus,fieldset[disabled] .btn-danger.focus{background-color:#cc0000;border-color:#cc0000}.btn-danger .badge{color:#cc0000;background-color:#ffffff}.btn-link{color:#2a9fd6;font-weight:normal;border-radius:0}.btn-link,.btn-link:active,.btn-link.active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#2a9fd6;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#888888;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:14px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.btn-sm,.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs,.btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity 0.15s linear;-o-transition:opacity 0.15s linear;transition:opacity 0.15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-property:height, visibility;-o-transition-property:height, visibility;transition-property:height, visibility;-webkit-transition-duration:0.35s;-o-transition-duration:0.35s;transition-duration:0.35s;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid \9;border-right:4px solid transparent;border-left:4px solid transparent}.dropup,.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:14px;text-align:left;background-color:#222222;border:1px solid #444444;border:1px solid rgba(255,255,255,0.1);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175);-webkit-background-clip:padding-box;background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:rgba(255,255,255,0.1)}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.42857143;color:#ffffff;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{text-decoration:none;color:#ffffff;background-color:#2a9fd6}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#ffffff;text-decoration:none;outline:0;background-color:#2a9fd6}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#888888}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);cursor:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{left:auto;right:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#888888;white-space:nowrap}.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px dashed;border-bottom:4px solid \9;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{left:auto;right:0}.navbar-right .dropdown-menu-left{left:0;right:auto}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-right-radius:0;border-top-left-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle="buttons"]>.btn input[type="radio"],[data-toggle="buttons"]>.btn-group>.btn input[type="radio"],[data-toggle="buttons"]>.btn input[type="checkbox"],[data-toggle="buttons"]>.btn-group>.btn input[type="checkbox"]{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*="col-"]{float:none;padding-left:0;padding-right:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control:focus{z-index:3}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:54px;padding:14px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:54px;line-height:54px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn,select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn,select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:8px 12px;font-size:14px;font-weight:normal;line-height:1;color:#888888;text-align:center;background-color:#424242;border:1px solid #282828;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:14px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type="radio"],.input-group-addon input[type="checkbox"]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#222222}.nav>li.disabled>a{color:#888888}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#888888;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#222222;border-color:#2a9fd6}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #282828}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:transparent transparent #282828}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#ffffff;background-color:#2a9fd6;border:1px solid #282828;border-bottom-color:transparent;cursor:default}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #dddddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #dddddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#060606}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#ffffff;background-color:#2a9fd6}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border:1px solid #dddddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #dddddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border-bottom-color:#060606}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);-webkit-overflow-scrolling:touch}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block !important;height:auto !important;padding-bottom:0;overflow:visible !important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-left:0;padding-right:0}}.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:200px}}.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:15px 15px;font-size:18px;line-height:20px;height:50px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:8px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{margin-left:-15px;margin-right:-15px;padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);margin-top:6px;margin-bottom:6px}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn,.navbar-form .input-group .form-control{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .radio label,.navbar-form .checkbox label{padding-left:0}.navbar-form .radio input[type="radio"],.navbar-form .checkbox input[type="checkbox"]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:6px;margin-bottom:6px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-left:15px;margin-right:15px}}@media (min-width:768px){.navbar-left{float:left !important}.navbar-right{float:right !important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#060606;border-color:#282828}.navbar-default .navbar-brand{color:#ffffff}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#ffffff;background-color:transparent}.navbar-default .navbar-text{color:#888888}.navbar-default .navbar-nav>li>a{color:#888888}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#ffffff;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#ffffff;background-color:transparent}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#888888;background-color:transparent}.navbar-default .navbar-toggle{border-color:#282828}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#282828}.navbar-default .navbar-toggle .icon-bar{background-color:#cccccc}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#282828}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{background-color:transparent;color:#ffffff}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#888888}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#ffffff;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#ffffff;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#888888;background-color:transparent}}.navbar-default .navbar-link{color:#888888}.navbar-default .navbar-link:hover{color:#ffffff}.navbar-default .btn-link{color:#888888}.navbar-default .btn-link:hover,.navbar-default .btn-link:focus{color:#ffffff}.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:hover,.navbar-default .btn-link[disabled]:focus,fieldset[disabled] .navbar-default .btn-link:focus{color:#888888}.navbar-inverse{background-color:#222222;border-color:#080808}.navbar-inverse .navbar-brand{color:#ffffff}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#ffffff;background-color:transparent}.navbar-inverse .navbar-text{color:#888888}.navbar-inverse .navbar-nav>li>a{color:#888888}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#ffffff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#ffffff;background-color:transparent}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#aaaaaa;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333333}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#333333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#ffffff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{background-color:transparent;color:#ffffff}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#888888}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#ffffff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#ffffff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#aaaaaa;background-color:transparent}}.navbar-inverse .navbar-link{color:#888888}.navbar-inverse .navbar-link:hover{color:#ffffff}.navbar-inverse .btn-link{color:#888888}.navbar-inverse .btn-link:hover,.navbar-inverse .btn-link:focus{color:#ffffff}.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:hover,.navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] .navbar-inverse .btn-link:focus{color:#aaaaaa}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#222222;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{content:"/\00a0";padding:0 5px;color:#ffffff}.breadcrumb>.active{color:#888888}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:8px 12px;line-height:1.42857143;text-decoration:none;color:#ffffff;background-color:#222222;border:1px solid #282828;margin-left:-1px}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-bottom-right-radius:4px;border-top-right-radius:4px}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{z-index:2;color:#ffffff;background-color:#2a9fd6;border-color:transparent}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:3;color:#ffffff;background-color:#2a9fd6;border-color:transparent;cursor:default}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#888888;background-color:#222222;border-color:#282828;cursor:not-allowed}.pagination-lg>li>a,.pagination-lg>li>span{padding:14px 16px;font-size:18px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-bottom-right-radius:6px;border-top-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:3px;border-top-right-radius:3px}.pager{padding-left:0;margin:20px 0;list-style:none;text-align:center}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#222222;border:1px solid #282828;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#2a9fd6}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#888888;background-color:#222222;cursor:not-allowed}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:bold;line-height:1;color:#ffffff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:hover,a.label:focus{color:#ffffff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#424242}.label-default[href]:hover,.label-default[href]:focus{background-color:#282828}.label-primary{background-color:#2a9fd6}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#2180ac}.label-success{background-color:#77b300}.label-success[href]:hover,.label-success[href]:focus{background-color:#558000}.label-info{background-color:#9933cc}.label-info[href]:hover,.label-info[href]:focus{background-color:#7a29a3}.label-warning{background-color:#ff8800}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#cc6d00}.label-danger{background-color:#cc0000}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#990000}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:bold;color:#ffffff;line-height:1;vertical-align:middle;white-space:nowrap;text-align:center;background-color:#2a9fd6;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge,.btn-group-xs>.btn .badge{top:0;padding:1px 5px}a.badge:hover,a.badge:focus{color:#ffffff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#2a9fd6;background-color:#ffffff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#151515}.jumbotron h1,.jumbotron .h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#000000}.container .jumbotron,.container-fluid .jumbotron{border-radius:6px;padding-left:15px;padding-right:15px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-left:60px;padding-right:60px}.jumbotron h1,.jumbotron .h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#282828;border:1px solid #282828;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail>img,.thumbnail a>img{margin-left:auto;margin-right:auto}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#2a9fd6}.thumbnail .caption{padding:9px;color:#888888}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:bold}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{background-color:#77b300;border-color:#809a00;color:#ffffff}.alert-success hr{border-top-color:#6a8000}.alert-success .alert-link{color:#e6e6e6}.alert-info{background-color:#9933cc;border-color:#6e2caf;color:#ffffff}.alert-info hr{border-top-color:#61279b}.alert-info .alert-link{color:#e6e6e6}.alert-warning{background-color:#ff8800;border-color:#f05800;color:#ffffff}.alert-warning hr{border-top-color:#d64f00}.alert-warning .alert-link{color:#e6e6e6}.alert-danger{background-color:#cc0000;border-color:#bd001f;color:#ffffff}.alert-danger hr{border-top-color:#a3001b}.alert-danger .alert-link{color:#e6e6e6}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:20px;margin-bottom:20px;background-color:#222222;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress-bar{float:left;width:0%;height:100%;font-size:12px;line-height:20px;color:#ffffff;text-align:center;background-color:#2a9fd6;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-transition:width 0.6s ease;-o-transition:width 0.6s ease;transition:width 0.6s ease}.progress-striped .progress-bar,.progress-bar-striped{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress.active .progress-bar,.progress-bar.active{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#77b300}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-info{background-color:#9933cc}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-warning{background-color:#ff8800}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-danger{background-color:#cc0000}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{zoom:1;overflow:hidden}.media-body{width:10000px}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-left,.media-right,.media-body{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{margin-bottom:20px;padding-left:0}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#222222;border:1px solid #282828}.list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item,button.list-group-item{color:#888888}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#ffffff}a.list-group-item:hover,button.list-group-item:hover,a.list-group-item:focus,button.list-group-item:focus{text-decoration:none;color:#888888;background-color:#484848}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:hover,.list-group-item.disabled:focus{background-color:#adafae;color:#888888;cursor:not-allowed}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text{color:#888888}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#ffffff;background-color:#2a9fd6;border-color:#2a9fd6}.list-group-item.active .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>.small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#d5ecf7}.list-group-item-success{color:#ffffff;background-color:#77b300}a.list-group-item-success,button.list-group-item-success{color:#ffffff}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,button.list-group-item-success:hover,a.list-group-item-success:focus,button.list-group-item-success:focus{color:#ffffff;background-color:#669a00}a.list-group-item-success.active,button.list-group-item-success.active,a.list-group-item-success.active:hover,button.list-group-item-success.active:hover,a.list-group-item-success.active:focus,button.list-group-item-success.active:focus{color:#fff;background-color:#ffffff;border-color:#ffffff}.list-group-item-info{color:#ffffff;background-color:#9933cc}a.list-group-item-info,button.list-group-item-info{color:#ffffff}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,button.list-group-item-info:hover,a.list-group-item-info:focus,button.list-group-item-info:focus{color:#ffffff;background-color:#8a2eb8}a.list-group-item-info.active,button.list-group-item-info.active,a.list-group-item-info.active:hover,button.list-group-item-info.active:hover,a.list-group-item-info.active:focus,button.list-group-item-info.active:focus{color:#fff;background-color:#ffffff;border-color:#ffffff}.list-group-item-warning{color:#ffffff;background-color:#ff8800}a.list-group-item-warning,button.list-group-item-warning{color:#ffffff}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,button.list-group-item-warning:hover,a.list-group-item-warning:focus,button.list-group-item-warning:focus{color:#ffffff;background-color:#e67a00}a.list-group-item-warning.active,button.list-group-item-warning.active,a.list-group-item-warning.active:hover,button.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus,button.list-group-item-warning.active:focus{color:#fff;background-color:#ffffff;border-color:#ffffff}.list-group-item-danger{color:#ffffff;background-color:#cc0000}a.list-group-item-danger,button.list-group-item-danger{color:#ffffff}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,button.list-group-item-danger:hover,a.list-group-item-danger:focus,button.list-group-item-danger:focus{color:#ffffff;background-color:#b30000}a.list-group-item-danger.active,button.list-group-item-danger.active,a.list-group-item-danger.active:hover,button.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus,button.list-group-item-danger.active:focus{color:#fff;background-color:#ffffff;border-color:#ffffff}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#222222;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>a,.panel-title>small,.panel-title>.small,.panel-title>small>a,.panel-title>.small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#3c3c3c;border-top:1px solid #282828;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:3px;border-top-left-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.table,.panel>.table-responsive>.table,.panel>.panel-collapse>.table{margin-bottom:0}.panel>.table caption,.panel>.table-responsive>.table caption,.panel>.panel-collapse>.table caption{padding-left:15px;padding-right:15px}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child{border-top-right-radius:3px;border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table:last-child,.panel>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-left-radius:3px;border-bottom-right-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #282828}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{border:0;margin-bottom:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.panel-body,.panel-group .panel-heading+.panel-collapse>.list-group{border-top:1px solid #282828}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #282828}.panel-default{border-color:#282828}.panel-default>.panel-heading{color:#888888;background-color:#3c3c3c;border-color:#282828}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#282828}.panel-default>.panel-heading .badge{color:#3c3c3c;background-color:#888888}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#282828}.panel-primary{border-color:#2a9fd6}.panel-primary>.panel-heading{color:#ffffff;background-color:#2a9fd6;border-color:#2a9fd6}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#2a9fd6}.panel-primary>.panel-heading .badge{color:#2a9fd6;background-color:#ffffff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#2a9fd6}.panel-success{border-color:#809a00}.panel-success>.panel-heading{color:#ffffff;background-color:#77b300;border-color:#809a00}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#809a00}.panel-success>.panel-heading .badge{color:#77b300;background-color:#ffffff}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#809a00}.panel-info{border-color:#6e2caf}.panel-info>.panel-heading{color:#ffffff;background-color:#9933cc;border-color:#6e2caf}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#6e2caf}.panel-info>.panel-heading .badge{color:#9933cc;background-color:#ffffff}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#6e2caf}.panel-warning{border-color:#f05800}.panel-warning>.panel-heading{color:#ffffff;background-color:#ff8800;border-color:#f05800}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#f05800}.panel-warning>.panel-heading .badge{color:#ff8800;background-color:#ffffff}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#f05800}.panel-danger{border-color:#bd001f}.panel-danger>.panel-heading{color:#ffffff;background-color:#cc0000;border-color:#bd001f}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bd001f}.panel-danger>.panel-heading .badge{color:#cc0000;background-color:#ffffff}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bd001f}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object,.embed-responsive video{position:absolute;top:0;left:0;bottom:0;height:100%;width:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#151515;border:1px solid #030303;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:bold;line-height:1;color:#000000;text-shadow:0 1px 0 #ffffff;opacity:0.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#000000;text-decoration:none;cursor:pointer;opacity:0.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{display:none;overflow:hidden;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate(0, -25%);-ms-transform:translate(0, -25%);-o-transform:translate(0, -25%);transform:translate(0, -25%);-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);-o-transform:translate(0, 0);transform:translate(0, 0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#202020;border:1px solid #999999;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,0.5);box-shadow:0 3px 9px rgba(0,0,0,0.5);-webkit-background-clip:padding-box;background-clip:padding-box;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:0.5;filter:alpha(opacity=50)}.modal-header{padding:15px;border-bottom:1px solid #282828}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:20px}.modal-footer{padding:20px;text-align:right;border-top:1px solid #282828}.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,0.5);box-shadow:0 5px 15px rgba(0,0,0,0.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:normal;letter-spacing:normal;line-break:auto;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:12px;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:0.9;filter:alpha(opacity=90)}.tooltip.top{margin-top:-3px;padding:5px 0}.tooltip.right{margin-left:3px;padding:0 5px}.tooltip.bottom{margin-top:3px;padding:5px 0}.tooltip.left{margin-left:-3px;padding:0 5px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#ffffff;text-align:center;background-color:#2c2c2c;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#2c2c2c}.tooltip.top-left .tooltip-arrow{bottom:0;right:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#2c2c2c}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#2c2c2c}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#2c2c2c}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#2c2c2c}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#2c2c2c}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#2c2c2c}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#2c2c2c}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:normal;letter-spacing:normal;line-break:auto;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:14px;background-color:#2c2c2c;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #2c2c2c;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2)}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{margin:0;padding:8px 14px;font-size:14px;background-color:#252525;border-bottom:1px solid #181818;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{border-width:10px;content:""}.popover.top>.arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#2c2c2c;border-top-color:rgba(0,0,0,0.2);bottom:-11px}.popover.top>.arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#2c2c2c}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#2c2c2c;border-right-color:rgba(0,0,0,0.2)}.popover.right>.arrow:after{content:" ";left:1px;bottom:-10px;border-left-width:0;border-right-color:#2c2c2c}.popover.bottom>.arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#2c2c2c;border-bottom-color:rgba(0,0,0,0.2);top:-11px}.popover.bottom>.arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#2c2c2c}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#2c2c2c;border-left-color:rgba(0,0,0,0.2)}.popover.left>.arrow:after{content:" ";right:1px;border-right-width:0;border-left-color:#2c2c2c;bottom:-10px}.carousel{position:relative}.carousel-inner{position:relative;overflow:hidden;width:100%}.carousel-inner>.item{display:none;position:relative;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.next,.carousel-inner>.item.active.right{-webkit-transform:translate3d(100%, 0, 0);transform:translate3d(100%, 0, 0);left:0}.carousel-inner>.item.prev,.carousel-inner>.item.active.left{-webkit-transform:translate3d(-100%, 0, 0);transform:translate3d(-100%, 0, 0);left:0}.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right,.carousel-inner>.item.active{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);left:0}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;left:0;bottom:0;width:15%;opacity:0.5;filter:alpha(opacity=50);font-size:20px;color:#ffffff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6);background-color:rgba(0,0,0,0)}.carousel-control.left{background-image:-webkit-linear-gradient(left, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-image:-o-linear-gradient(left, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-image:-webkit-gradient(linear, left top, right top, from(rgba(0,0,0,0.5)), to(rgba(0,0,0,0.0001)));background-image:linear-gradient(to right, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1)}.carousel-control.right{left:auto;right:0;background-image:-webkit-linear-gradient(left, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-image:-o-linear-gradient(left, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-image:-webkit-gradient(linear, left top, right top, from(rgba(0,0,0,0.0001)), to(rgba(0,0,0,0.5)));background-image:linear-gradient(to right, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1)}.carousel-control:hover,.carousel-control:focus{outline:0;color:#ffffff;text-decoration:none;opacity:0.9;filter:alpha(opacity=90)}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;margin-top:-10px;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:50%;margin-left:-10px}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:50%;margin-right:-10px}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;line-height:1;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;margin-left:-30%;padding-left:0;list-style:none;text-align:center}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;border:1px solid #ffffff;border-radius:10px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0)}.carousel-indicators .active{margin:0;width:12px;height:12px;background-color:#ffffff}.carousel-caption{position:absolute;left:15%;right:15%;bottom:20px;z-index:10;padding-top:20px;padding-bottom:20px;color:#ffffff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-10px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-10px}.carousel-caption{left:20%;right:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after,.dl-horizontal dd:before,.dl-horizontal dd:after,.container:before,.container:after,.container-fluid:before,.container-fluid:after,.row:before,.row:after,.form-horizontal .form-group:before,.form-horizontal .form-group:after,.btn-toolbar:before,.btn-toolbar:after,.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after,.nav:before,.nav:after,.navbar:before,.navbar:after,.navbar-header:before,.navbar-header:after,.navbar-collapse:before,.navbar-collapse:after,.pager:before,.pager:after,.panel-body:before,.panel-body:after,.modal-header:before,.modal-header:after,.modal-footer:before,.modal-footer:after{content:" ";display:table}.clearfix:after,.dl-horizontal dd:after,.container:after,.container-fluid:after,.row:after,.form-horizontal .form-group:after,.btn-toolbar:after,.btn-group-vertical>.btn-group:after,.nav:after,.navbar:after,.navbar-header:after,.navbar-collapse:after,.pager:after,.panel-body:after,.modal-header:after,.modal-footer:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right !important}.pull-left{float:left !important}.hide{display:none !important}.show{display:block !important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none !important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none !important}.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block{display:none !important}@media (max-width:767px){.visible-xs{display:block !important}table.visible-xs{display:table !important}tr.visible-xs{display:table-row !important}th.visible-xs,td.visible-xs{display:table-cell !important}}@media (max-width:767px){.visible-xs-block{display:block !important}}@media (max-width:767px){.visible-xs-inline{display:inline !important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block !important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block !important}table.visible-sm{display:table !important}tr.visible-sm{display:table-row !important}th.visible-sm,td.visible-sm{display:table-cell !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block !important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block !important}table.visible-md{display:table !important}tr.visible-md{display:table-row !important}th.visible-md,td.visible-md{display:table-cell !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block !important}}@media (min-width:1200px){.visible-lg{display:block !important}table.visible-lg{display:table !important}tr.visible-lg{display:table-row !important}th.visible-lg,td.visible-lg{display:table-cell !important}}@media (min-width:1200px){.visible-lg-block{display:block !important}}@media (min-width:1200px){.visible-lg-inline{display:inline !important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block !important}}@media (max-width:767px){.hidden-xs{display:none !important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none !important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none !important}}@media (min-width:1200px){.hidden-lg{display:none !important}}.visible-print{display:none !important}@media print{.visible-print{display:block !important}table.visible-print{display:table !important}tr.visible-print{display:table-row !important}th.visible-print,td.visible-print{display:table-cell !important}}.visible-print-block{display:none !important}@media print{.visible-print-block{display:block !important}}.visible-print-inline{display:none !important}@media print{.visible-print-inline{display:inline !important}}.visible-print-inline-block{display:none !important}@media print{.visible-print-inline-block{display:inline-block !important}}@media print{.hidden-print{display:none !important}}.text-primary,.text-primary:hover{color:#2a9fd6}.text-success,.text-success:hover{color:#77b300}.text-danger,.text-danger:hover{color:#cc0000}.text-warning,.text-warning:hover{color:#ff8800}.text-info,.text-info:hover{color:#9933cc}.bg-success,.bg-info,.bg-warning,.bg-danger{color:#fff}table,.table{color:#fff}table a:not(.btn),.table a:not(.btn){color:#fff;text-decoration:underline}table .dropdown-menu a,.table .dropdown-menu a{text-decoration:none}table .text-muted,.table .text-muted{color:#888888}.table-responsive>.table{background-color:#181818}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label,.has-warning .form-control-feedback{color:#ff8800}.has-warning .form-control,.has-warning .form-control:focus,.has-warning .input-group-addon{border-color:#ff8800}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label,.has-error .form-control-feedback{color:#cc0000}.has-error .form-control,.has-error .form-control:focus,.has-error .input-group-addon{border-color:#cc0000}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label,.has-success .form-control-feedback{color:#77b300}.has-success .form-control,.has-success .form-control:focus,.has-success .input-group-addon{border-color:#77b300}legend{color:#fff}.nav-tabs a,.nav-pills a,.breadcrumb a,.pager a{color:#fff}.alert .alert-link,.alert a{color:#ffffff;text-decoration:underline}.alert .close{text-decoration:none}.close{color:#fff;text-decoration:none;opacity:0.4}.close:hover,.close:focus{color:#fff;opacity:1}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#282828}a.list-group-item.active,a.list-group-item.active:hover,a.list-group-item.active:focus{border-color:#282828}a.list-group-item-success.active{background-color:#77b300}a.list-group-item-success.active:hover,a.list-group-item-success.active:focus{background-color:#669a00}a.list-group-item-warning.active{background-color:#ff8800}a.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus{background-color:#e67a00}a.list-group-item-danger.active{background-color:#cc0000}a.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus{background-color:#b30000}.jumbotron h1,.jumbotron h2,.jumbotron h3,.jumbotron h4,.jumbotron h5,.jumbotron h6{color:#fff}
- input, optgroup, select, textarea{
- color: #888;
- }
-
-::-webkit-scrollbar-track, ::-webkit-scrollbar-thumb{-webkit-box-shadow: inset 0 0 6px rgba(255,255,255,255.3) !important;}
-
-.form-control, .bootgrid-table td.loading, .bootgrid-table td.no-results {
- color: #EEE;
- background-color: #555;
-
-}
-
-.webui-popover, .select2-container--default .select2-results__option--selected {
- background-color: #333 !important;
-}
-::-webkit-scrollbar-track, ::-webkit-scrollbar-thumb{-webkit-box-shadow: inset 0 0 6px rgba(255,255,255,255.3) !important;}
-
-th a, .select2-container--default span, .swal-text,
-.nav-tabs>li.active>a, .nav-tabs>li.active>a:focus, .nav-tabs>li.active>a:hover,
-.tabbable-line > .nav-tabs > li.active > a > i,
-.swal-title {
- color: #FFF !important;
-}
-th:hover, .select2-dropdown{
- background-color: #111 !important;
-}
-.swal-modal{
- background-color: #2e3338;
-}
-#socket_info_container .socketItem, #socket_info_container{
- background-color: rgba(0,0,0,0.5) !important;
-}
-#socket_info_container div {
- text-shadow: 0 0 2px #000 !important;
- color: #AAA !important;
-}
-.swal-icon, .swal-icon:before, .swal-icon:after, .swal-icon--success__hide-corners{
- background-color: #2e3338;
-}
-.swal-icon--info:after, .swal-icon--info:before{
- background-color: #c9dae1;
-}
-.btn-default.no-outline:hover{
- color: #AAA !important;
+@import url("https://fonts.googleapis.com/css?family=Roboto:400,700");/*!
+ * bootswatch v3.3.7
+ * Homepage: http://bootswatch.com
+ * Copyright 2012-2017 Thomas Park
+ * Licensed under MIT
+ * Based on Bootstrap
+*//*!
+ * Bootstrap v3.3.7 (http://getbootstrap.com)
+ * Copyright 2011-2016 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,*:before,*:after{background:transparent !important;color:#000 !important;-webkit-box-shadow:none !important;box-shadow:none !important;text-shadow:none !important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100% !important}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000 !important}.label{border:1px solid #000}.table{border-collapse:collapse !important}.table td,.table th{background-color:#fff !important}.table-bordered th,.table-bordered td{border:1px solid #ddd !important}}@font-face{font-family:'Glyphicons Halflings';src:url('../fonts/glyphicons-halflings-regular.eot');src:url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'),url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'),url('../fonts/glyphicons-halflings-regular.woff') format('woff'),url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'),url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\002a"}.glyphicon-plus:before{content:"\002b"}.glyphicon-euro:before,.glyphicon-eur:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#888888;background-color:#060606}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#2a9fd6;text-decoration:none}a:hover,a:focus{color:#2a9fd6;text-decoration:underline}a:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive,.thumbnail>img,.thumbnail a>img,.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{padding:4px;line-height:1.42857143;background-color:#282828;border:1px solid #282828;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #282828}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role="button"]{cursor:pointer}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:500;line-height:1.1;color:#ffffff}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:normal;line-height:1;color:#888888}h1,.h1,h2,.h2,h3,.h3{margin-top:20px;margin-bottom:10px}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:10px;margin-bottom:10px}h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small{font-size:75%}h1,.h1{font-size:56px}h2,.h2{font-size:45px}h3,.h3{font-size:34px}h4,.h4{font-size:24px}h5,.h5{font-size:20px}h6,.h6{font-size:16px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}small,.small{font-size:85%}mark,.mark{background-color:#ff8800;padding:.2em}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#888888}.text-primary{color:#2a9fd6}a.text-primary:hover,a.text-primary:focus{color:#2180ac}.text-success{color:#ffffff}a.text-success:hover,a.text-success:focus{color:#e6e6e6}.text-info{color:#ffffff}a.text-info:hover,a.text-info:focus{color:#e6e6e6}.text-warning{color:#ffffff}a.text-warning:hover,a.text-warning:focus{color:#e6e6e6}.text-danger{color:#ffffff}a.text-danger:hover,a.text-danger:focus{color:#e6e6e6}.bg-primary{color:#fff;background-color:#2a9fd6}a.bg-primary:hover,a.bg-primary:focus{background-color:#2180ac}.bg-success{background-color:#77b300}a.bg-success:hover,a.bg-success:focus{background-color:#558000}.bg-info{background-color:#9933cc}a.bg-info:hover,a.bg-info:focus{background-color:#7a29a3}.bg-warning{background-color:#ff8800}a.bg-warning:hover,a.bg-warning:focus{background-color:#cc6d00}.bg-danger{background-color:#cc0000}a.bg-danger:hover,a.bg-danger:focus{background-color:#990000}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #282828}ul,ol{margin-top:0;margin-bottom:10px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none;margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dl{margin-top:0;margin-bottom:20px}dt,dd{line-height:1.42857143}dt{font-weight:bold}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #888888}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #282828}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857143;color:#555555}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #282828;border-left:0;text-align:right}.blockquote-reverse footer:before,blockquote.pull-right footer:before,.blockquote-reverse small:before,blockquote.pull-right small:before,.blockquote-reverse .small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,blockquote.pull-right footer:after,.blockquote-reverse small:after,blockquote.pull-right small:after,.blockquote-reverse .small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#ffffff;background-color:#333333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25)}kbd kbd{padding:0;font-size:100%;font-weight:bold;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;word-break:break-all;word-wrap:break-word;color:#282828;background-color:#f5f5f5;border:1px solid #cccccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.row{margin-left:-15px;margin-right:-15px}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0%}@media (min-width:768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0%}}@media (min-width:992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0%}}@media (min-width:1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0%}}table{background-color:#181818}caption{padding-top:8px;padding-bottom:8px;color:#888888;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #282828}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #282828}.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #282828}.table .table{background-color:#060606}.table-condensed>thead>tr>th,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #282828}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #282828}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#080808}.table-hover>tbody>tr:hover{background-color:#282828}table col[class*="col-"]{position:static;float:none;display:table-column}table td[class*="col-"],table th[class*="col-"]{position:static;float:none;display:table-cell}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#282828}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr.active:hover>th{background-color:#1b1b1b}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#77b300}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr.success:hover>th{background-color:#669a00}.table>thead>tr>td.info,.table>tbody>tr>td.info,.table>tfoot>tr>td.info,.table>thead>tr>th.info,.table>tbody>tr>th.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>tbody>tr.info>td,.table>tfoot>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr.info>th,.table>tfoot>tr.info>th{background-color:#9933cc}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr.info:hover>th{background-color:#8a2eb8}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#ff8800}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr.warning:hover>th{background-color:#e67a00}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#cc0000}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr.danger:hover>th{background-color:#b30000}.table-responsive{overflow-x:auto;min-height:0.01%}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #282828}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{padding:0;margin:0;border:0;min-width:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#888888;border:0;border-bottom:1px solid #282828}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:bold}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type="file"]{display:block}input[type="range"]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:9px;font-size:14px;line-height:1.42857143;color:#888888}.form-control{display:block;width:100%;height:38px;padding:8px 12px;font-size:14px;line-height:1.42857143;color:#888888;background-color:#ffffff;background-image:none;border:1px solid #282828;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6)}.form-control::-moz-placeholder{color:#888888;opacity:1}.form-control:-ms-input-placeholder{color:#888888}.form-control::-webkit-input-placeholder{color:#888888}.form-control::-ms-expand{border:0;background-color:transparent}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#adafae;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}input[type="search"]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type="date"].form-control,input[type="time"].form-control,input[type="datetime-local"].form-control,input[type="month"].form-control{line-height:38px}input[type="date"].input-sm,input[type="time"].input-sm,input[type="datetime-local"].input-sm,input[type="month"].input-sm,.input-group-sm input[type="date"],.input-group-sm input[type="time"],.input-group-sm input[type="datetime-local"],.input-group-sm input[type="month"]{line-height:30px}input[type="date"].input-lg,input[type="time"].input-lg,input[type="datetime-local"].input-lg,input[type="month"].input-lg,.input-group-lg input[type="date"],.input-group-lg input[type="time"],.input-group-lg input[type="datetime-local"],.input-group-lg input[type="month"]{line-height:54px}}.form-group{margin-bottom:15px}.radio,.checkbox{position:relative;display:block;margin-top:10px;margin-bottom:10px}.radio label,.checkbox label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:normal;cursor:pointer}.radio input[type="radio"],.radio-inline input[type="radio"],.checkbox input[type="checkbox"],.checkbox-inline input[type="checkbox"]{position:absolute;margin-left:-20px;margin-top:4px \9}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:normal;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type="radio"][disabled],input[type="checkbox"][disabled],input[type="radio"].disabled,input[type="checkbox"].disabled,fieldset[disabled] input[type="radio"],fieldset[disabled] input[type="checkbox"]{cursor:not-allowed}.radio-inline.disabled,.checkbox-inline.disabled,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.radio.disabled label,.checkbox.disabled label,fieldset[disabled] .radio label,fieldset[disabled] .checkbox label{cursor:not-allowed}.form-control-static{padding-top:9px;padding-bottom:9px;margin-bottom:0;min-height:34px}.form-control-static.input-lg,.form-control-static.input-sm{padding-left:0;padding-right:0}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}textarea.input-sm,select[multiple].input-sm{height:auto}.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm textarea.form-control,.form-group-sm select[multiple].form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}.input-lg{height:54px;padding:14px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-lg{height:54px;line-height:54px}textarea.input-lg,select[multiple].input-lg{height:auto}.form-group-lg .form-control{height:54px;padding:14px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.form-group-lg select.form-control{height:54px;line-height:54px}.form-group-lg textarea.form-control,.form-group-lg select[multiple].form-control{height:auto}.form-group-lg .form-control-static{height:54px;min-height:38px;padding:15px 16px;font-size:18px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:47.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:38px;height:38px;line-height:38px;text-align:center;pointer-events:none}.input-lg+.form-control-feedback,.input-group-lg+.form-control-feedback,.form-group-lg .form-control+.form-control-feedback{width:54px;height:54px;line-height:54px}.input-sm+.form-control-feedback,.input-group-sm+.form-control-feedback,.form-group-sm .form-control+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label{color:#ffffff}.has-success .form-control{border-color:#ffffff;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-success .form-control:focus{border-color:#e6e6e6;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff}.has-success .input-group-addon{color:#ffffff;border-color:#ffffff;background-color:#77b300}.has-success .form-control-feedback{color:#ffffff}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label{color:#ffffff}.has-warning .form-control{border-color:#ffffff;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-warning .form-control:focus{border-color:#e6e6e6;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff}.has-warning .input-group-addon{color:#ffffff;border-color:#ffffff;background-color:#ff8800}.has-warning .form-control-feedback{color:#ffffff}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label{color:#ffffff}.has-error .form-control{border-color:#ffffff;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-error .form-control:focus{border-color:#e6e6e6;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff}.has-error .input-group-addon{color:#ffffff;border-color:#ffffff;background-color:#cc0000}.has-error .form-control-feedback{color:#ffffff}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#c8c8c8}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn,.form-inline .input-group .form-control{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .radio label,.form-inline .checkbox label{padding-left:0}.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{margin-top:0;margin-bottom:0;padding-top:9px}.form-horizontal .radio,.form-horizontal .checkbox{min-height:29px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}@media (min-width:768px){.form-horizontal .control-label{text-align:right;margin-bottom:0;padding-top:9px}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:15px;font-size:18px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:8px 12px;font-size:14px;line-height:1.42857143;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn:focus,.btn:active:focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn.active.focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus,.btn.focus{color:#ffffff;text-decoration:none}.btn:active,.btn.active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;opacity:0.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#ffffff;background-color:#424242;border-color:#424242}.btn-default:focus,.btn-default.focus{color:#ffffff;background-color:#282828;border-color:#020202}.btn-default:hover{color:#ffffff;background-color:#282828;border-color:#232323}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{color:#ffffff;background-color:#282828;border-color:#232323}.btn-default:active:hover,.btn-default.active:hover,.open>.dropdown-toggle.btn-default:hover,.btn-default:active:focus,.btn-default.active:focus,.open>.dropdown-toggle.btn-default:focus,.btn-default:active.focus,.btn-default.active.focus,.open>.dropdown-toggle.btn-default.focus{color:#ffffff;background-color:#161616;border-color:#020202}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled.focus,.btn-default[disabled].focus,fieldset[disabled] .btn-default.focus{background-color:#424242;border-color:#424242}.btn-default .badge{color:#424242;background-color:#ffffff}.btn-primary{color:#ffffff;background-color:#2a9fd6;border-color:#2a9fd6}.btn-primary:focus,.btn-primary.focus{color:#ffffff;background-color:#2180ac;border-color:#15506c}.btn-primary:hover{color:#ffffff;background-color:#2180ac;border-color:#1f79a3}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{color:#ffffff;background-color:#2180ac;border-color:#1f79a3}.btn-primary:active:hover,.btn-primary.active:hover,.open>.dropdown-toggle.btn-primary:hover,.btn-primary:active:focus,.btn-primary.active:focus,.open>.dropdown-toggle.btn-primary:focus,.btn-primary:active.focus,.btn-primary.active.focus,.open>.dropdown-toggle.btn-primary.focus{color:#ffffff;background-color:#1b698e;border-color:#15506c}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled.focus,.btn-primary[disabled].focus,fieldset[disabled] .btn-primary.focus{background-color:#2a9fd6;border-color:#2a9fd6}.btn-primary .badge{color:#2a9fd6;background-color:#ffffff}.btn-success{color:#ffffff;background-color:#77b300;border-color:#77b300}.btn-success:focus,.btn-success.focus{color:#ffffff;background-color:#558000;border-color:#223300}.btn-success:hover{color:#ffffff;background-color:#558000;border-color:#4e7600}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{color:#ffffff;background-color:#558000;border-color:#4e7600}.btn-success:active:hover,.btn-success.active:hover,.open>.dropdown-toggle.btn-success:hover,.btn-success:active:focus,.btn-success.active:focus,.open>.dropdown-toggle.btn-success:focus,.btn-success:active.focus,.btn-success.active.focus,.open>.dropdown-toggle.btn-success.focus{color:#ffffff;background-color:#3d5c00;border-color:#223300}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled.focus,.btn-success[disabled].focus,fieldset[disabled] .btn-success.focus{background-color:#77b300;border-color:#77b300}.btn-success .badge{color:#77b300;background-color:#ffffff}.btn-info{color:#ffffff;background-color:#9933cc;border-color:#9933cc}.btn-info:focus,.btn-info.focus{color:#ffffff;background-color:#7a29a3;border-color:#4c1966}.btn-info:hover{color:#ffffff;background-color:#7a29a3;border-color:#74279b}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{color:#ffffff;background-color:#7a29a3;border-color:#74279b}.btn-info:active:hover,.btn-info.active:hover,.open>.dropdown-toggle.btn-info:hover,.btn-info:active:focus,.btn-info.active:focus,.open>.dropdown-toggle.btn-info:focus,.btn-info:active.focus,.btn-info.active.focus,.open>.dropdown-toggle.btn-info.focus{color:#ffffff;background-color:#652287;border-color:#4c1966}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled.focus,.btn-info[disabled].focus,fieldset[disabled] .btn-info.focus{background-color:#9933cc;border-color:#9933cc}.btn-info .badge{color:#9933cc;background-color:#ffffff}.btn-warning{color:#ffffff;background-color:#ff8800;border-color:#ff8800}.btn-warning:focus,.btn-warning.focus{color:#ffffff;background-color:#cc6d00;border-color:#804400}.btn-warning:hover{color:#ffffff;background-color:#cc6d00;border-color:#c26700}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{color:#ffffff;background-color:#cc6d00;border-color:#c26700}.btn-warning:active:hover,.btn-warning.active:hover,.open>.dropdown-toggle.btn-warning:hover,.btn-warning:active:focus,.btn-warning.active:focus,.open>.dropdown-toggle.btn-warning:focus,.btn-warning:active.focus,.btn-warning.active.focus,.open>.dropdown-toggle.btn-warning.focus{color:#ffffff;background-color:#a85a00;border-color:#804400}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled.focus,.btn-warning[disabled].focus,fieldset[disabled] .btn-warning.focus{background-color:#ff8800;border-color:#ff8800}.btn-warning .badge{color:#ff8800;background-color:#ffffff}.btn-danger{color:#ffffff;background-color:#cc0000;border-color:#cc0000}.btn-danger:focus,.btn-danger.focus{color:#ffffff;background-color:#990000;border-color:#4d0000}.btn-danger:hover{color:#ffffff;background-color:#990000;border-color:#8f0000}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{color:#ffffff;background-color:#990000;border-color:#8f0000}.btn-danger:active:hover,.btn-danger.active:hover,.open>.dropdown-toggle.btn-danger:hover,.btn-danger:active:focus,.btn-danger.active:focus,.open>.dropdown-toggle.btn-danger:focus,.btn-danger:active.focus,.btn-danger.active.focus,.open>.dropdown-toggle.btn-danger.focus{color:#ffffff;background-color:#750000;border-color:#4d0000}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled.focus,.btn-danger[disabled].focus,fieldset[disabled] .btn-danger.focus{background-color:#cc0000;border-color:#cc0000}.btn-danger .badge{color:#cc0000;background-color:#ffffff}.btn-link{color:#2a9fd6;font-weight:normal;border-radius:0}.btn-link,.btn-link:active,.btn-link.active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#2a9fd6;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#888888;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:14px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.btn-sm,.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs,.btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity 0.15s linear;-o-transition:opacity 0.15s linear;transition:opacity 0.15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-property:height, visibility;-o-transition-property:height, visibility;transition-property:height, visibility;-webkit-transition-duration:0.35s;-o-transition-duration:0.35s;transition-duration:0.35s;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid \9;border-right:4px solid transparent;border-left:4px solid transparent}.dropup,.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:14px;text-align:left;background-color:#222222;border:1px solid #444444;border:1px solid rgba(255,255,255,0.1);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175);-webkit-background-clip:padding-box;background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:rgba(255,255,255,0.1)}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.42857143;color:#ffffff;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{text-decoration:none;color:#ffffff;background-color:#2a9fd6}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#ffffff;text-decoration:none;outline:0;background-color:#2a9fd6}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#888888}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);cursor:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{left:auto;right:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#888888;white-space:nowrap}.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px dashed;border-bottom:4px solid \9;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{left:auto;right:0}.navbar-right .dropdown-menu-left{left:0;right:auto}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-right-radius:0;border-top-left-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle="buttons"]>.btn input[type="radio"],[data-toggle="buttons"]>.btn-group>.btn input[type="radio"],[data-toggle="buttons"]>.btn input[type="checkbox"],[data-toggle="buttons"]>.btn-group>.btn input[type="checkbox"]{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*="col-"]{float:none;padding-left:0;padding-right:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control:focus{z-index:3}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:54px;padding:14px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:54px;line-height:54px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn,select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn,select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:8px 12px;font-size:14px;font-weight:normal;line-height:1;color:#888888;text-align:center;background-color:#424242;border:1px solid #282828;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:14px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type="radio"],.input-group-addon input[type="checkbox"]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#222222}.nav>li.disabled>a{color:#888888}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#888888;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#222222;border-color:#2a9fd6}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #282828}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:transparent transparent #282828}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#ffffff;background-color:#2a9fd6;border:1px solid #282828;border-bottom-color:transparent;cursor:default}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #dddddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #dddddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#060606}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#ffffff;background-color:#2a9fd6}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border:1px solid #dddddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #dddddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border-bottom-color:#060606}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);-webkit-overflow-scrolling:touch}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block !important;height:auto !important;padding-bottom:0;overflow:visible !important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-left:0;padding-right:0}}.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:200px}}.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:15px 15px;font-size:18px;line-height:20px;height:50px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:8px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{margin-left:-15px;margin-right:-15px;padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);margin-top:6px;margin-bottom:6px}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn,.navbar-form .input-group .form-control{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .radio label,.navbar-form .checkbox label{padding-left:0}.navbar-form .radio input[type="radio"],.navbar-form .checkbox input[type="checkbox"]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:6px;margin-bottom:6px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-left:15px;margin-right:15px}}@media (min-width:768px){.navbar-left{float:left !important}.navbar-right{float:right !important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#060606;border-color:#282828}.navbar-default .navbar-brand{color:#ffffff}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#ffffff;background-color:transparent}.navbar-default .navbar-text{color:#888888}.navbar-default .navbar-nav>li>a{color:#888888}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#ffffff;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#ffffff;background-color:transparent}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#888888;background-color:transparent}.navbar-default .navbar-toggle{border-color:#282828}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#282828}.navbar-default .navbar-toggle .icon-bar{background-color:#cccccc}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#282828}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{background-color:transparent;color:#ffffff}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#888888}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#ffffff;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#ffffff;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#888888;background-color:transparent}}.navbar-default .navbar-link{color:#888888}.navbar-default .navbar-link:hover{color:#ffffff}.navbar-default .btn-link{color:#888888}.navbar-default .btn-link:hover,.navbar-default .btn-link:focus{color:#ffffff}.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:hover,.navbar-default .btn-link[disabled]:focus,fieldset[disabled] .navbar-default .btn-link:focus{color:#888888}.navbar-inverse{background-color:#222222;border-color:#080808}.navbar-inverse .navbar-brand{color:#ffffff}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#ffffff;background-color:transparent}.navbar-inverse .navbar-text{color:#888888}.navbar-inverse .navbar-nav>li>a{color:#888888}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#ffffff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#ffffff;background-color:transparent}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#aaaaaa;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333333}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#333333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#ffffff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{background-color:transparent;color:#ffffff}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#888888}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#ffffff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#ffffff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#aaaaaa;background-color:transparent}}.navbar-inverse .navbar-link{color:#888888}.navbar-inverse .navbar-link:hover{color:#ffffff}.navbar-inverse .btn-link{color:#888888}.navbar-inverse .btn-link:hover,.navbar-inverse .btn-link:focus{color:#ffffff}.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:hover,.navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] .navbar-inverse .btn-link:focus{color:#aaaaaa}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#222222;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{content:"/\00a0";padding:0 5px;color:#ffffff}.breadcrumb>.active{color:#888888}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:8px 12px;line-height:1.42857143;text-decoration:none;color:#ffffff;background-color:#222222;border:1px solid #282828;margin-left:-1px}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-bottom-right-radius:4px;border-top-right-radius:4px}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{z-index:2;color:#ffffff;background-color:#2a9fd6;border-color:transparent}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:3;color:#ffffff;background-color:#2a9fd6;border-color:transparent;cursor:default}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#888888;background-color:#222222;border-color:#282828;cursor:not-allowed}.pagination-lg>li>a,.pagination-lg>li>span{padding:14px 16px;font-size:18px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-bottom-right-radius:6px;border-top-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:3px;border-top-right-radius:3px}.pager{padding-left:0;margin:20px 0;list-style:none;text-align:center}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#222222;border:1px solid #282828;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#2a9fd6}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#888888;background-color:#222222;cursor:not-allowed}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:bold;line-height:1;color:#ffffff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:hover,a.label:focus{color:#ffffff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#424242}.label-default[href]:hover,.label-default[href]:focus{background-color:#282828}.label-primary{background-color:#2a9fd6}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#2180ac}.label-success{background-color:#77b300}.label-success[href]:hover,.label-success[href]:focus{background-color:#558000}.label-info{background-color:#9933cc}.label-info[href]:hover,.label-info[href]:focus{background-color:#7a29a3}.label-warning{background-color:#ff8800}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#cc6d00}.label-danger{background-color:#cc0000}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#990000}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:bold;color:#ffffff;line-height:1;vertical-align:middle;white-space:nowrap;text-align:center;background-color:#2a9fd6;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge,.btn-group-xs>.btn .badge{top:0;padding:1px 5px}a.badge:hover,a.badge:focus{color:#ffffff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#2a9fd6;background-color:#ffffff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#151515}.jumbotron h1,.jumbotron .h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#000000}.container .jumbotron,.container-fluid .jumbotron{border-radius:6px;padding-left:15px;padding-right:15px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-left:60px;padding-right:60px}.jumbotron h1,.jumbotron .h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#282828;border:1px solid #282828;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail>img,.thumbnail a>img{margin-left:auto;margin-right:auto}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#2a9fd6}.thumbnail .caption{padding:9px;color:#888888}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:bold}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{background-color:#77b300;border-color:#809a00;color:#ffffff}.alert-success hr{border-top-color:#6a8000}.alert-success .alert-link{color:#e6e6e6}.alert-info{background-color:#9933cc;border-color:#6e2caf;color:#ffffff}.alert-info hr{border-top-color:#61279b}.alert-info .alert-link{color:#e6e6e6}.alert-warning{background-color:#ff8800;border-color:#f05800;color:#ffffff}.alert-warning hr{border-top-color:#d64f00}.alert-warning .alert-link{color:#e6e6e6}.alert-danger{background-color:#cc0000;border-color:#bd001f;color:#ffffff}.alert-danger hr{border-top-color:#a3001b}.alert-danger .alert-link{color:#e6e6e6}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:20px;margin-bottom:20px;background-color:#222222;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress-bar{float:left;width:0%;height:100%;font-size:12px;line-height:20px;color:#ffffff;text-align:center;background-color:#2a9fd6;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-transition:width 0.6s ease;-o-transition:width 0.6s ease;transition:width 0.6s ease}.progress-striped .progress-bar,.progress-bar-striped{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress.active .progress-bar,.progress-bar.active{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#77b300}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-info{background-color:#9933cc}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-warning{background-color:#ff8800}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-danger{background-color:#cc0000}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{zoom:1;overflow:hidden}.media-body{width:10000px}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-left,.media-right,.media-body{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{margin-bottom:20px;padding-left:0}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#222222;border:1px solid #282828}.list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item,button.list-group-item{color:#888888}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#ffffff}a.list-group-item:hover,button.list-group-item:hover,a.list-group-item:focus,button.list-group-item:focus{text-decoration:none;color:#888888;background-color:#484848}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:hover,.list-group-item.disabled:focus{background-color:#adafae;color:#888888;cursor:not-allowed}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text{color:#888888}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#ffffff;background-color:#2a9fd6;border-color:#2a9fd6}.list-group-item.active .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>.small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#d5ecf7}.list-group-item-success{color:#ffffff;background-color:#77b300}a.list-group-item-success,button.list-group-item-success{color:#ffffff}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,button.list-group-item-success:hover,a.list-group-item-success:focus,button.list-group-item-success:focus{color:#ffffff;background-color:#669a00}a.list-group-item-success.active,button.list-group-item-success.active,a.list-group-item-success.active:hover,button.list-group-item-success.active:hover,a.list-group-item-success.active:focus,button.list-group-item-success.active:focus{color:#fff;background-color:#ffffff;border-color:#ffffff}.list-group-item-info{color:#ffffff;background-color:#9933cc}a.list-group-item-info,button.list-group-item-info{color:#ffffff}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,button.list-group-item-info:hover,a.list-group-item-info:focus,button.list-group-item-info:focus{color:#ffffff;background-color:#8a2eb8}a.list-group-item-info.active,button.list-group-item-info.active,a.list-group-item-info.active:hover,button.list-group-item-info.active:hover,a.list-group-item-info.active:focus,button.list-group-item-info.active:focus{color:#fff;background-color:#ffffff;border-color:#ffffff}.list-group-item-warning{color:#ffffff;background-color:#ff8800}a.list-group-item-warning,button.list-group-item-warning{color:#ffffff}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,button.list-group-item-warning:hover,a.list-group-item-warning:focus,button.list-group-item-warning:focus{color:#ffffff;background-color:#e67a00}a.list-group-item-warning.active,button.list-group-item-warning.active,a.list-group-item-warning.active:hover,button.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus,button.list-group-item-warning.active:focus{color:#fff;background-color:#ffffff;border-color:#ffffff}.list-group-item-danger{color:#ffffff;background-color:#cc0000}a.list-group-item-danger,button.list-group-item-danger{color:#ffffff}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,button.list-group-item-danger:hover,a.list-group-item-danger:focus,button.list-group-item-danger:focus{color:#ffffff;background-color:#b30000}a.list-group-item-danger.active,button.list-group-item-danger.active,a.list-group-item-danger.active:hover,button.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus,button.list-group-item-danger.active:focus{color:#fff;background-color:#ffffff;border-color:#ffffff}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#222222;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>a,.panel-title>small,.panel-title>.small,.panel-title>small>a,.panel-title>.small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#3c3c3c;border-top:1px solid #282828;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:3px;border-top-left-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.table,.panel>.table-responsive>.table,.panel>.panel-collapse>.table{margin-bottom:0}.panel>.table caption,.panel>.table-responsive>.table caption,.panel>.panel-collapse>.table caption{padding-left:15px;padding-right:15px}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child{border-top-right-radius:3px;border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table:last-child,.panel>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-left-radius:3px;border-bottom-right-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #282828}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{border:0;margin-bottom:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.panel-body,.panel-group .panel-heading+.panel-collapse>.list-group{border-top:1px solid #282828}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #282828}.panel-default{border-color:#282828}.panel-default>.panel-heading{color:#888888;background-color:#3c3c3c;border-color:#282828}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#282828}.panel-default>.panel-heading .badge{color:#3c3c3c;background-color:#888888}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#282828}.panel-primary{border-color:#2a9fd6}.panel-primary>.panel-heading{color:#ffffff;background-color:#2a9fd6;border-color:#2a9fd6}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#2a9fd6}.panel-primary>.panel-heading .badge{color:#2a9fd6;background-color:#ffffff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#2a9fd6}.panel-success{border-color:#809a00}.panel-success>.panel-heading{color:#ffffff;background-color:#77b300;border-color:#809a00}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#809a00}.panel-success>.panel-heading .badge{color:#77b300;background-color:#ffffff}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#809a00}.panel-info{border-color:#6e2caf}.panel-info>.panel-heading{color:#ffffff;background-color:#9933cc;border-color:#6e2caf}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#6e2caf}.panel-info>.panel-heading .badge{color:#9933cc;background-color:#ffffff}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#6e2caf}.panel-warning{border-color:#f05800}.panel-warning>.panel-heading{color:#ffffff;background-color:#ff8800;border-color:#f05800}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#f05800}.panel-warning>.panel-heading .badge{color:#ff8800;background-color:#ffffff}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#f05800}.panel-danger{border-color:#bd001f}.panel-danger>.panel-heading{color:#ffffff;background-color:#cc0000;border-color:#bd001f}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bd001f}.panel-danger>.panel-heading .badge{color:#cc0000;background-color:#ffffff}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bd001f}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object,.embed-responsive video{position:absolute;top:0;left:0;bottom:0;height:100%;width:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#151515;border:1px solid #030303;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:bold;line-height:1;color:#000000;text-shadow:0 1px 0 #ffffff;opacity:0.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#000000;text-decoration:none;cursor:pointer;opacity:0.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{display:none;overflow:hidden;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate(0, -25%);-ms-transform:translate(0, -25%);-o-transform:translate(0, -25%);transform:translate(0, -25%);-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);-o-transform:translate(0, 0);transform:translate(0, 0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#202020;border:1px solid #999999;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,0.5);box-shadow:0 3px 9px rgba(0,0,0,0.5);-webkit-background-clip:padding-box;background-clip:padding-box;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:0.5;filter:alpha(opacity=50)}.modal-header{padding:15px;border-bottom:1px solid #282828}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:20px}.modal-footer{padding:20px;text-align:right;border-top:1px solid #282828}.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,0.5);box-shadow:0 5px 15px rgba(0,0,0,0.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:normal;letter-spacing:normal;line-break:auto;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:12px;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:0.9;filter:alpha(opacity=90)}.tooltip.top{margin-top:-3px;padding:5px 0}.tooltip.right{margin-left:3px;padding:0 5px}.tooltip.bottom{margin-top:3px;padding:5px 0}.tooltip.left{margin-left:-3px;padding:0 5px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#ffffff;text-align:center;background-color:#2c2c2c;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#2c2c2c}.tooltip.top-left .tooltip-arrow{bottom:0;right:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#2c2c2c}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#2c2c2c}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#2c2c2c}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#2c2c2c}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#2c2c2c}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#2c2c2c}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#2c2c2c}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:normal;letter-spacing:normal;line-break:auto;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:14px;background-color:#2c2c2c;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #2c2c2c;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2)}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{margin:0;padding:8px 14px;font-size:14px;background-color:#252525;border-bottom:1px solid #181818;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{border-width:10px;content:""}.popover.top>.arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#2c2c2c;border-top-color:rgba(0,0,0,0.2);bottom:-11px}.popover.top>.arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#2c2c2c}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#2c2c2c;border-right-color:rgba(0,0,0,0.2)}.popover.right>.arrow:after{content:" ";left:1px;bottom:-10px;border-left-width:0;border-right-color:#2c2c2c}.popover.bottom>.arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#2c2c2c;border-bottom-color:rgba(0,0,0,0.2);top:-11px}.popover.bottom>.arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#2c2c2c}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#2c2c2c;border-left-color:rgba(0,0,0,0.2)}.popover.left>.arrow:after{content:" ";right:1px;border-right-width:0;border-left-color:#2c2c2c;bottom:-10px}.carousel{position:relative}.carousel-inner{position:relative;overflow:hidden;width:100%}.carousel-inner>.item{display:none;position:relative;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.next,.carousel-inner>.item.active.right{-webkit-transform:translate3d(100%, 0, 0);transform:translate3d(100%, 0, 0);left:0}.carousel-inner>.item.prev,.carousel-inner>.item.active.left{-webkit-transform:translate3d(-100%, 0, 0);transform:translate3d(-100%, 0, 0);left:0}.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right,.carousel-inner>.item.active{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);left:0}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;left:0;bottom:0;width:15%;opacity:0.5;filter:alpha(opacity=50);font-size:20px;color:#ffffff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6);background-color:rgba(0,0,0,0)}.carousel-control.left{background-image:-webkit-linear-gradient(left, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-image:-o-linear-gradient(left, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-image:-webkit-gradient(linear, left top, right top, from(rgba(0,0,0,0.5)), to(rgba(0,0,0,0.0001)));background-image:linear-gradient(to right, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1)}.carousel-control.right{left:auto;right:0;background-image:-webkit-linear-gradient(left, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-image:-o-linear-gradient(left, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-image:-webkit-gradient(linear, left top, right top, from(rgba(0,0,0,0.0001)), to(rgba(0,0,0,0.5)));background-image:linear-gradient(to right, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1)}.carousel-control:hover,.carousel-control:focus{outline:0;color:#ffffff;text-decoration:none;opacity:0.9;filter:alpha(opacity=90)}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;margin-top:-10px;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:50%;margin-left:-10px}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:50%;margin-right:-10px}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;line-height:1;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;margin-left:-30%;padding-left:0;list-style:none;text-align:center}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;border:1px solid #ffffff;border-radius:10px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0)}.carousel-indicators .active{margin:0;width:12px;height:12px;background-color:#ffffff}.carousel-caption{position:absolute;left:15%;right:15%;bottom:20px;z-index:10;padding-top:20px;padding-bottom:20px;color:#ffffff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-10px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-10px}.carousel-caption{left:20%;right:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after,.dl-horizontal dd:before,.dl-horizontal dd:after,.container:before,.container:after,.container-fluid:before,.container-fluid:after,.row:before,.row:after,.form-horizontal .form-group:before,.form-horizontal .form-group:after,.btn-toolbar:before,.btn-toolbar:after,.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after,.nav:before,.nav:after,.navbar:before,.navbar:after,.navbar-header:before,.navbar-header:after,.navbar-collapse:before,.navbar-collapse:after,.pager:before,.pager:after,.panel-body:before,.panel-body:after,.modal-header:before,.modal-header:after,.modal-footer:before,.modal-footer:after{content:" ";display:table}.clearfix:after,.dl-horizontal dd:after,.container:after,.container-fluid:after,.row:after,.form-horizontal .form-group:after,.btn-toolbar:after,.btn-group-vertical>.btn-group:after,.nav:after,.navbar:after,.navbar-header:after,.navbar-collapse:after,.pager:after,.panel-body:after,.modal-header:after,.modal-footer:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right !important}.pull-left{float:left !important}.hide{display:none !important}.show{display:block !important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none !important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none !important}.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block{display:none !important}@media (max-width:767px){.visible-xs{display:block !important}table.visible-xs{display:table !important}tr.visible-xs{display:table-row !important}th.visible-xs,td.visible-xs{display:table-cell !important}}@media (max-width:767px){.visible-xs-block{display:block !important}}@media (max-width:767px){.visible-xs-inline{display:inline !important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block !important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block !important}table.visible-sm{display:table !important}tr.visible-sm{display:table-row !important}th.visible-sm,td.visible-sm{display:table-cell !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block !important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block !important}table.visible-md{display:table !important}tr.visible-md{display:table-row !important}th.visible-md,td.visible-md{display:table-cell !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block !important}}@media (min-width:1200px){.visible-lg{display:block !important}table.visible-lg{display:table !important}tr.visible-lg{display:table-row !important}th.visible-lg,td.visible-lg{display:table-cell !important}}@media (min-width:1200px){.visible-lg-block{display:block !important}}@media (min-width:1200px){.visible-lg-inline{display:inline !important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block !important}}@media (max-width:767px){.hidden-xs{display:none !important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none !important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none !important}}@media (min-width:1200px){.hidden-lg{display:none !important}}.visible-print{display:none !important}@media print{.visible-print{display:block !important}table.visible-print{display:table !important}tr.visible-print{display:table-row !important}th.visible-print,td.visible-print{display:table-cell !important}}.visible-print-block{display:none !important}@media print{.visible-print-block{display:block !important}}.visible-print-inline{display:none !important}@media print{.visible-print-inline{display:inline !important}}.visible-print-inline-block{display:none !important}@media print{.visible-print-inline-block{display:inline-block !important}}@media print{.hidden-print{display:none !important}}.text-primary,.text-primary:hover{color:#2a9fd6}.text-success,.text-success:hover{color:#77b300}.text-danger,.text-danger:hover{color:#cc0000}.text-warning,.text-warning:hover{color:#ff8800}.text-info,.text-info:hover{color:#9933cc}.bg-success,.bg-info,.bg-warning,.bg-danger{color:#fff}table,.table{color:#fff}table a:not(.btn),.table a:not(.btn){color:#fff;text-decoration:underline}table .dropdown-menu a,.table .dropdown-menu a{text-decoration:none}table .text-muted,.table .text-muted{color:#888888}.table-responsive>.table{background-color:#181818}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label,.has-warning .form-control-feedback{color:#ff8800}.has-warning .form-control,.has-warning .form-control:focus,.has-warning .input-group-addon{border-color:#ff8800}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label,.has-error .form-control-feedback{color:#cc0000}.has-error .form-control,.has-error .form-control:focus,.has-error .input-group-addon{border-color:#cc0000}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label,.has-success .form-control-feedback{color:#77b300}.has-success .form-control,.has-success .form-control:focus,.has-success .input-group-addon{border-color:#77b300}legend{color:#fff}.nav-tabs a,.nav-pills a,.breadcrumb a,.pager a{color:#fff}.alert .alert-link,.alert a{color:#ffffff;text-decoration:underline}.alert .close{text-decoration:none}.close{color:#fff;text-decoration:none;opacity:0.4}.close:hover,.close:focus{color:#fff;opacity:1}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#282828}a.list-group-item.active,a.list-group-item.active:hover,a.list-group-item.active:focus{border-color:#282828}a.list-group-item-success.active{background-color:#77b300}a.list-group-item-success.active:hover,a.list-group-item-success.active:focus{background-color:#669a00}a.list-group-item-warning.active{background-color:#ff8800}a.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus{background-color:#e67a00}a.list-group-item-danger.active{background-color:#cc0000}a.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus{background-color:#b30000}.jumbotron h1,.jumbotron h2,.jumbotron h3,.jumbotron h4,.jumbotron h5,.jumbotron h6{color:#fff}
+ input, optgroup, select, textarea{
+ color: #888;
+ }
+
+::-webkit-scrollbar-track, ::-webkit-scrollbar-thumb{-webkit-box-shadow: inset 0 0 6px rgba(255,255,255,255.3) !important;}
+
+.form-control, .bootgrid-table td.loading, .bootgrid-table td.no-results {
+ color: #EEE;
+ background-color: #555;
+
+}
+
+.webui-popover, .select2-container--default .select2-results__option--selected {
+ background-color: #333 !important;
+}
+::-webkit-scrollbar-track, ::-webkit-scrollbar-thumb{-webkit-box-shadow: inset 0 0 6px rgba(255,255,255,255.3) !important;}
+
+th a, .select2-container--default span, .swal-text,
+.nav-tabs>li.active>a, .nav-tabs>li.active>a:focus, .nav-tabs>li.active>a:hover,
+.tabbable-line > .nav-tabs > li.active > a > i,
+.swal-title {
+ color: #FFF !important;
+}
+th:hover, .select2-dropdown{
+ background-color: #111 !important;
+}
+.swal-modal{
+ background-color: #2e3338;
+}
+#socket_info_container .socketItem, #socket_info_container{
+ background-color: rgba(0,0,0,0.5) !important;
+}
+#socket_info_container div {
+ text-shadow: 0 0 2px #000 !important;
+ color: #AAA !important;
+}
+.swal-icon, .swal-icon:before, .swal-icon:after, .swal-icon--success__hide-corners{
+ background-color: #2e3338;
+}
+.swal-icon--info:after, .swal-icon--info:before{
+ background-color: #c9dae1;
+}
+.btn-default.no-outline:hover{
+ color: #AAA !important;
+}
+
+.gallery .title, .videosDetails .title {
+ max-height: 40px !important;
}
\ No newline at end of file
diff --git a/view/css/main.css b/view/css/main.css
index e59263f81bb2..4cbbb879e92b 100644
--- a/view/css/main.css
+++ b/view/css/main.css
@@ -582,9 +582,6 @@ nav ul.items-container li:first-child ul.left-side {
ul.left-side {
height: 50px;
}
-nav ul.items-container li:last-child {
- margin-right: 20px;
-}
nav ul.items-container li ul.right-menus {
display: flex;
flex-direction: row;
@@ -741,9 +738,6 @@ img.blur{
.rightProfile li a{
text-align: left;
}
-#mainNavBar ul.items-container li:last-child {
- margin-right: 0 !important;
-}
.ima-controls-div{
pointer-events: none !important;
@@ -1032,6 +1026,7 @@ li.dropdown-submenu > ul > li > a{
height: calc(100% - 150px);
}
.swal-modal.swal-modal-iframe .swal-content,
+.swal-modal.swal-modal-iframe-xsmall .swal-content,
.swal-modal.swal-modal-iframe-small .swal-content,
.swal-modal.swal-modal-iframe-large .swal-content,
.swal-modal.swal-modal-iframe-full .swal-content{
@@ -1039,6 +1034,7 @@ li.dropdown-submenu > ul > li > a{
height: 100%;
}
.swal-modal.swal-modal-iframe iframe,
+.swal-modal.swal-modal-iframe-xsmall iframe,
.swal-modal.swal-modal-iframe-small iframe,
.swal-modal.swal-modal-iframe-large iframe,
.swal-modal.swal-modal-iframe-full iframe{
@@ -1058,6 +1054,13 @@ li.dropdown-submenu > ul > li > a{
max-height: 100%;
}
+.swal-modal-iframe-xsmall {
+ width: 640px;
+ height: 480px;
+ max-width: 100%;
+ max-height: 100%;
+}
+
.swal-modal-iframe-large {
width: calc(100% - 50px);
height: calc(100% - 50px);
@@ -1112,6 +1115,9 @@ li.dropdown-submenu > ul > li > a{
#avideoModalIframeDiv{
padding-inline-start: 5px;
}
+ button.hamburger{
+ display: flex !important;
+ }
}
@@ -1256,4 +1262,188 @@ a:hover{
width: 100%;
height: 100%;
z-index: 1;
+}
+
+/* hamburger menu styles*/
+button.hamburger{
+ outline: none !important;
+ display: flex;
+ margin: 0 5px;
+ padding: 0 4px;
+}
+button.btn-sm.hamburger{
+ margin: -2px 5px;
+ padding: 0;
+}
+button.btn-sm.hamburger svg{
+ width: 24px;
+}
+.ham {
+ cursor: pointer;
+ -webkit-tap-highlight-color: transparent;
+ transition: transform 400ms;
+ -moz-user-select: none;
+ -webkit-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+.hamRotate.active {
+ transform: rotate(45deg);
+}
+.hamRotate180.active {
+ transform: rotate(180deg);
+}
+.line {
+ fill:none;
+ transition: stroke-dasharray 400ms, stroke-dashoffset 400ms;
+ stroke:#000;
+ stroke-width:5.5;
+ stroke-linecap:round;
+}
+.ham1 .top {
+ stroke-dasharray: 40 139;
+}
+.ham1 .bottom {
+ stroke-dasharray: 40 180;
+}
+.ham1.active .top {
+ stroke-dashoffset: -98px;
+}
+.ham1.active .bottom {
+ stroke-dashoffset: -138px;
+}
+.ham2 .top {
+ stroke-dasharray: 40 121;
+}
+.ham2 .bottom {
+ stroke-dasharray: 40 121;
+}
+.ham2.active .top {
+ stroke-dashoffset: -102px;
+}
+.ham2.active .bottom {
+ stroke-dashoffset: -102px;
+}
+.ham3 .top {
+ stroke-dasharray: 40 130;
+}
+.ham3 .middle {
+ stroke-dasharray: 40 140;
+}
+.ham3 .bottom {
+ stroke-dasharray: 40 205;
+}
+.ham3.active .top {
+ stroke-dasharray: 75 130;
+ stroke-dashoffset: -63px;
+}
+.ham3.active .middle {
+ stroke-dashoffset: -102px;
+}
+.ham3.active .bottom {
+ stroke-dasharray: 110 205;
+ stroke-dashoffset: -86px;
+}
+.ham4 .top {
+ stroke-dasharray: 40 121;
+}
+.ham4 .bottom {
+ stroke-dasharray: 40 121;
+}
+.ham4.active .top {
+ stroke-dashoffset: -68px;
+}
+.ham4.active .bottom {
+ stroke-dashoffset: -68px;
+}
+.ham5 .top {
+ stroke-dasharray: 40 82;
+}
+.ham5 .bottom {
+ stroke-dasharray: 40 82;
+}
+.ham5.active .top {
+ stroke-dasharray: 14 82;
+ stroke-dashoffset: -72px;
+}
+.ham5.active .bottom {
+ stroke-dasharray: 14 82;
+ stroke-dashoffset: -72px;
+}
+.ham6 .top {
+ stroke-dasharray: 40 172;
+}
+.ham6 .middle {
+ stroke-dasharray: 40 111;
+}
+.ham6 .bottom {
+ stroke-dasharray: 40 172;
+}
+.ham6.active .top {
+ stroke-dashoffset: -132px;
+}
+.ham6.active .middle {
+ stroke-dashoffset: -71px;
+}
+.ham6.active .bottom {
+ stroke-dashoffset: -132px;
+}
+.ham7 .top {
+ stroke-dasharray: 40 82;
+}
+.ham7 .middle {
+ stroke-dasharray: 40 111;
+}
+.ham7 .bottom {
+ stroke-dasharray: 40 161;
+}
+.ham7.active .top {
+ stroke-dasharray: 17 82;
+ stroke-dashoffset: -62px;
+}
+.ham7.active .middle {
+ stroke-dashoffset: 23px;
+}
+.ham7.active .bottom {
+ stroke-dashoffset: -83px;
+}
+.ham8 .top {
+ stroke-dasharray: 40 160;
+}
+.ham8 .middle {
+ stroke-dasharray: 40 142;
+ transform-origin: 50%;
+ transition: transform 400ms;
+}
+.ham8 .bottom {
+ stroke-dasharray: 40 85;
+ transform-origin: 50%;
+ transition: transform 400ms, stroke-dashoffset 400ms;
+}
+.ham8.active .top {
+ stroke-dashoffset: -64px;
+}
+.ham8.active .middle {
+ transform: rotate(90deg);
+}
+.ham8.active .bottom {
+ stroke-dashoffset: -64px;
+}
+.users_id_online_label .label{
+ padding: 5px;
+ border-radius: 5px !important;
+}
+.users_id_online_label .label-success,
+.users_id_online_label .callerButton{
+ display: none;
+}
+.users_id_online_label .label-success:hover{
+ animation: glowBox 1s infinite alternate;
+}
+.users_id_online_label.online .label-success,
+.users_id_online_label.online .callerButton{
+ display: inline;
+}
+.users_id_online_label.online .label-danger{
+ display: none;
}
\ No newline at end of file
diff --git a/view/css/navbar.css b/view/css/navbar.css
new file mode 100644
index 000000000000..90c1a47ee0c7
--- /dev/null
+++ b/view/css/navbar.css
@@ -0,0 +1,215 @@
+/* if it is IE */
+@media all and (-ms-high-contrast:none){
+ nav ul.items-container li:first-child {
+ display: block;
+ flex: 0 1 auto; /* Default */
+ }
+}
+
+#buttonMyNavbar{
+ display: none;
+}
+
+#mysearch.in,
+#mysearch.collapsing {
+ display: block!important;
+}
+#myNavbar{
+ display: block;
+}
+#myNavbar.in,
+#myNavbar.collapsing {
+ display: block!important;
+}
+#searchForm {
+ width: 100%;
+ margin-left: 5px;
+ white-space: nowrap;
+}
+#searchForm .btn {
+ border-top-left-radius: 0;
+ border-bottom-left-radius: 0;
+ border-left-width: 0;
+}
+#searchForm input {
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 0;
+ border-right-width: 0;
+}
+
+#rightProfileButton{
+ padding: 0;
+ margin: 5px;
+ border: 0;
+ background: none;
+ background-color: transparent;
+}
+
+#rightLoginButton{
+ margin-left: 5px;
+ margin-right: 40px;
+}
+
+#navbarRegularButtons{
+ max-width: 70%;
+ /* remove the scroll because the dropsown menus does not work */
+ /*overflow-x: auto;*/
+ /*overflow-y: hidden;*/
+}
+
+#navbarRegularButtons span.hidden-mdx{
+ max-width: 15vw;
+ display: inline-block;
+}
+
+#navbarRegularButtons .btn{
+ overflow: hidden;
+}
+
+#navbarRegularButtons::-webkit-scrollbar {
+ height: 4px;
+}
+#lastItemOnMenu{
+ padding-right: 40px;
+}
+#mysearch{
+ height: auto !important;
+}
+#searchNavItem, #lastItemOnMenu{
+ display: flex;
+ justify-content: center;
+ align-items: center;
+}
+#lastItemOnMenu ul{
+ padding: 0;
+}
+
+@media (max-width : 992px) {
+ #searchForm input{
+ width: 100px;
+ }
+}
+@media (max-width : 767px) {
+ #searchForm {
+ padding-left: 10px;
+ }
+ #rightLoginButton, #rightProfileButton{
+ margin-right: 5px;
+ margin-left: 0;
+ }
+
+ #searchForm > div{
+ width: 100%;
+ }
+
+ .mobilesecondnav {
+ position: absolute;
+ left: 40%;
+ right: 5px;
+ }
+
+ #buttonMyNavbar, #searchNavItem{
+ display: block;
+ }
+
+ #mysearch{
+ /* width: 100%; */
+ display: none;
+ position: absolute;
+ right: 0;
+ left: 0;
+ padding-left: 0px;
+ padding-right: 0px;
+ background-color: #FFF;
+
+ }
+
+ #myNavbar{
+ display: none;
+ position: absolute;
+ right: 0;
+ top: 50px;
+ background-color: #FFF;
+ padding: 4px;
+ width: 50%;
+ }
+ #mainNavBar .navbar-brand{
+ width: 100% !important;
+ text-align: center;
+ }
+ #mainNavBar .navbar-brand>img {
+ display: unset;
+ }
+
+ #myNavbar ul.right-menus{
+ display: block;
+ }
+
+ #myNavbar ul.right-menus li{
+ margin: 0;
+ padding: 0;
+ }
+ #myNavbar ul.right-menus .btn, #myNavbar ul.right-menus .btn-group{
+ margin: 2px;
+ width: 100%;
+ }
+ #myNavbar ul.right-menus .btn-group{
+ margin: 0;
+ }
+ nav ul.items-container li:first-child {
+ display: list-item;
+ }
+ #navbarRegularButtons span.hidden-mdx {
+ max-width: 100vw;
+ }
+ .globalsearchfield {
+ width: 90% !important;
+ }
+
+ .searchli {
+ width: 100%;
+ margin-right: 0;
+ margin-left: 0;
+
+ }
+ .searchdiv {
+
+ }
+ .navbar-toggle {
+ margin-right: 5px !important;
+
+
+ }
+ #navbarRegularButtons, #lastItemOnMenu, .left-side {
+ padding: 0 5px;
+ }
+ .searchul{
+ padding-left: 0px;
+ }
+}
+
+li.navsub-toggle .badge {
+ float: right;
+}
+li.navsub-toggle a + ul {
+ padding-left: 15px;
+}
+
+.navbar-lang-btn .select2-container{
+ margin: 8px 0;
+}
+.navbar-lang-btn .select2-selection{
+ border-color: #00000077 !important;
+}
+
+@media screen and (min-width: 992px) {
+
+ body.youtube>div.container-fluid{
+ margin-left: 300px;
+ }
+ body.youtube div.container-fluid .col-sm-10.col-sm-offset-1.list-group-item{
+ margin-left: 0;
+ margin-right: 0;
+ width: 100%;
+ }
+}
diff --git a/view/include/head.php b/view/include/head.php
index a9d55749bf27..2b224529bcde 100644
--- a/view/include/head.php
+++ b/view/include/head.php
@@ -179,6 +179,8 @@
var _serverTimeString = "";
var _serverDBTimeString = "";
var _serverTimezone = "";
+ var avideoModalIframeFullScreenCloseButton = ;
+ var avideoModalIframeFullScreenCloseButtonSmall = ;
var PHPSESSID = "";
+ $new_query_string = http_build_query($params);
+ ?>
" class="btn btn-default" style="position: absolute; right: 10px; top: 5px;">
-
-
-
- @media screen and (min-width: 992px) {
-
- body.youtube>div.container-fluid{
- margin-left: 300px;
- }
- body.youtube div.container-fluid .col-sm-10.col-sm-offset-1.list-group-item{
- margin-left: 0;
- margin-right: 0;
- width: 100%;
- }
- }
-
-
+ return false;
+}
+_ob_start();
+?>
+
{$customizePluginDescription}";
- } elseif (!empty($metaDescription)) {
- echo "";
- }
+ echo "";
+} elseif (!empty($metaDescription)) {
+ echo "";
+}
if (!User::isLogged() && !empty($advancedCustomUser->userMustBeLoggedIn) && !empty($advancedCustomUser->userMustBeLoggedInCloseButtonURL)) {
- ?>
-
-
-
- userMustBeLoggedIn) && empty($advancedCustom->disableNavbar)) || $thisScriptFile["basename"] === "signUp.php" || $thisScriptFile["basename"] === "userRecoverPass.php") || User::isLogged()) {
- $updateFiles = getUpdatesFilesArray(); ?>
+ $updateFiles = getUpdatesFilesArray();
+ ?>
' . $subscribe . '