CVE-2021-23415 (Other, published 2021-07-28T16:15Z)
Description: value: This affects the package elFinder.AspNet before 1.1.1. The user-controlled file name is not properly sanitized before it is used to create a file system path.
Severity: MEDIUM (CVSS v3 base score: 7.5)
Weakness: CWE-22 \u2014 Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal')
The product uses external input to construct a pathname that is intended to identify a file or directory that is located underneath a restricted parent directory, but the product does not properly neutralize special elements within the pathname that can cause the pathname to resolve to a location that is outside of the restricted directory.
Repository: https://github.com/mguinness/elFinder.AspNet
Files changed:
.gitignore
LICENSE
MVC5.md
README.md
elFinder.AspNet.Web/Controllers/FileManagerController.cs
elFinder.AspNet.Web/Controllers/FileSystemController.cs
elFinder.AspNet.Web/Controllers/HomeController.cs
elFinder.AspNet.Web/Controllers/TinyMCEController.cs
elFinder.AspNet.Web/Program.cs
elFinder.AspNet.Web/Properties/launchSettings.json
elFinder.AspNet.Web/Startup.cs
elFinder.AspNet.Web/Views/FileManager/Index.cshtml
elFinder.AspNet.Web/Views/Home/Index.cshtml
elFinder.AspNet.Web/Views/Shared/Error.cshtml
elFinder.AspNet.Web/Views/Shared/_Layout.cshtml
elFinder.AspNet.Web/Views/TinyMCE/Browse.cshtml
elFinder.AspNet.Web/Views/TinyMCE/Index.cshtml
elFinder.AspNet.Web/Views/_ViewImports.cshtml
elFinder.AspNet.Web/Views/_ViewStart.cshtml
elFinder.AspNet.Web/appsettings.Development.json
elFinder.AspNet.Web/appsettings.json
elFinder.AspNet.Web/bundleconfig.json
elFinder.AspNet.Web/elFinder.AspNet.Web.csproj
elFinder.AspNet.Web/libman.json
elFinder.AspNet.Web/wwwroot/css/elfinder/themes/bootstrap-LibreICONS/css/theme-bootstrap-libreicons-svg.css
elFinder.AspNet.Web/wwwroot/css/elfinder/themes/bootstrap-LibreICONS/img/libre-archive.svg
elFinder.AspNet.Web/wwwroot/css/elfinder/themes/bootstrap-LibreICONS/img/libre-arrow-left.svg
elFinder.AspNet.Web/wwwroot/css/elfinder/themes/bootstrap-LibreICONS/img/libre-arrow-right.svg
elFinder.AspNet.Web/wwwroot/css/elfinder/themes/bootstrap-LibreICONS/img/libre-caret-down.svg
elFinder.AspNet.Web/wwwroot/css/elfinder/themes/bootstrap-LibreICONS/img/libre-chevron-left.svg
elFinder.AspNet.Web/wwwroot/css/elfinder/themes/bootstrap-LibreICONS/img/libre-chevron-right.svg
elFinder.AspNet.Web/wwwroot/css/elfinder/themes/bootstrap-LibreICONS/img/libre-close.svg
elFinder.AspNet.Web/wwwroot/css/elfinder/themes/bootstrap-LibreICONS/img/libre-copy.svg
elFinder.AspNet.Web/wwwroot/css/elfinder/themes/bootstrap-LibreICONS/img/libre-crop.svg
elFinder.AspNet.Web/wwwroot/css/elfinder/themes/bootstrap-LibreICONS/img/libre-cut.svg
elFinder.AspNet.Web/wwwroot/css/elfinder/themes/bootstrap-LibreICONS/img/libre-download.svg
elFinder.AspNet.Web/wwwroot/css/elfinder/themes/bootstrap-LibreICONS/img/libre-edit.svg
elFinder.AspNet.Web/wwwroot/css/elfinder/themes/bootstrap-LibreICONS/img/libre-exclamation-circle.svg
elFinder.AspNet.Web/wwwroot/css/elfinder/themes/bootstrap-LibreICONS/img/libre-file-archive.svg
elFinder.AspNet.Web/wwwroot/css/elfinder/themes/bootstrap-LibreICONS/img/libre-file-audio.svg
elFinder.AspNet.Web/wwwroot/css/elfinder/themes/bootstrap-LibreICONS/img/libre-file-code.svg
elFinder.AspNet.Web/wwwroot/css/elfinder/themes/bootstrap-LibreICONS/img/libre-file-docs.svg
elFinder.AspNet.Web/wwwroot/css/elfinder/themes/bootstrap-LibreICONS/img/libre-file-image.svg
elFinder.AspNet.Web/wwwroot/css/elfinder/themes/bootstrap-LibreICONS/img/libre-file-pdf.svg
elFinder.AspNet.Web/wwwroot/css/elfinder/themes/bootstrap-LibreICONS/img/libre-file-text.svg
elFinder.AspNet.Web/wwwroot/css/elfinder/themes/bootstrap-LibreICONS/img/libre-file-video.svg
elFinder.AspNet.Web/wwwroot/css/elfinder/themes/bootstrap-LibreICONS/img/libre-file.svg
elFinder.AspNet.Web/wwwroot/css/elfinder/themes/bootstrap-LibreICONS/img/libre-film.svg
elFinder.AspNet.Web/wwwroot/css/elfinder/themes/bootstrap-LibreICONS/img/libre-folder-archive.svg
elFinder.AspNet.Web/wwwroot/css/elfinder/themes/bootstrap-LibreICONS/img/libre-folder-attachments.svg
elFinder.AspNet.Web/wwwroot/css/elfinder/themes/bootstrap-LibreICONS/img/libre-folder-backup.svg
elFinder.AspNet.Web/wwwroot/css/elfinder/themes/bootstrap-LibreICONS/img/libre-folder-document.svg
elFinder.AspNet.Web/wwwroot/css/elfinder/themes/bootstrap-LibreICONS/img/libre-folder-featured.svg
elFinder.AspNet.Web/wwwroot/css/elfinder/themes/bootstrap-LibreICONS/img/libre-folder-open.svg
elFinder.AspNet.Web/wwwroot/css/elfinder/themes/bootstrap-LibreICONS/img/libre-folder-orders.svg
elFinder.AspNet.Web/wwwroot/css/elfinder/themes/bootstrap-LibreICONS/img/libre-folder-picture.svg
elFinder.AspNet.Web/wwwroot/css/elfinder/themes/bootstrap-LibreICONS/img/libre-folder-users.svg
elFinder.AspNet.Web/wwwroot/css/elfinder/themes/bootstrap-LibreICONS/img/libre-folder-video.svg
elFinder.AspNet.Web/wwwroot/css/elfinder/themes/bootstrap-LibreICONS/img/libre-folder.svg
elFinder.AspNet.Web/wwwroot/css/elfinder/themes/bootstrap-LibreICONS/img/libre-help.svg
elFinder.AspNet.Web/wwwroot/css/elfinder/themes/bootstrap-LibreICONS/img/libre-home.svg
elFinder.AspNet.Web/wwwroot/css/elfinder/themes/bootstrap-LibreICONS/img/libre-layout-blocks.svg
elFinder.AspNet.Web/wwwroot/css/elfinder/themes/bootstrap-LibreICONS/img/libre-layout-list.svg
elFinder.AspNet.Web/wwwroot/css/elfinder/themes/bootstrap-LibreICONS/img/libre-level-up.svg
elFinder.AspNet.Web/wwwroot/css/elfinder/themes/bootstrap-LibreICONS/img/libre-paste.svg
elFinder.AspNet.Web/wwwroot/css/elfinder/themes/bootstrap-LibreICONS/img/libre-question-circle.svg
elFinder.AspNet.Web/wwwroot/css/elfinder/themes/bootstrap-LibreICONS/img/libre-refresh.svg
elFinder.AspNet.Web/wwwroot/css/elfinder/themes/bootstrap-LibreICONS/img/libre-resize-full.svg
elFinder.AspNet.Web/wwwroot/css/elfinder/themes/bootstrap-LibreICONS/img/libre-resize-small.svg
elFinder.AspNet.Web/wwwroot/css/elfinder/themes/bootstrap-LibreICONS/img/libre-search.svg
elFinder.AspNet.Web/wwwroot/css/elfinder/themes/bootstrap-LibreICONS/img/libre-server.svg
elFinder.AspNet.Web/wwwroot/css/elfinder/themes/bootstrap-LibreICONS/img/libre-sort-asc.svg
elFinder.AspNet.Web/wwwroot/css/elfinder/themes/bootstrap-LibreICONS/img/libre-sort-desc.svg
elFinder.AspNet.Web/wwwroot/css/elfinder/themes/bootstrap-LibreICONS/img/libre-sort.svg
elFinder.AspNet.Web/wwwroot/css/elfinder/themes/bootstrap-LibreICONS/img/libre-text-cursor.svg
elFinder.AspNet.Web/wwwroot/css/elfinder/themes/bootstrap-LibreICONS/img/libre-trash.svg
elFinder.AspNet.Web/wwwroot/css/elfinder/themes/bootstrap-LibreICONS/img/libre-upload.svg
elFinder.AspNet.Web/wwwroot/css/elfinder/themes/bootstrap-LibreICONS/img/libre-view.svg
elFinder.AspNet.Web/wwwroot/css/elfinder/themes/material/css/theme-gray.css
elFinder.AspNet.Web/wwwroot/css/elfinder/themes/material/css/theme-gray.min.css
elFinder.AspNet.Web/wwwroot/css/elfinder/themes/material/css/theme-light.css
elFinder.AspNet.Web/wwwroot/css/elfinder/themes/material/css/theme-light.min.css
elFinder.AspNet.Web/wwwroot/css/elfinder/themes/material/css/theme.css
elFinder.AspNet.Web/wwwroot/css/elfinder/themes/material/css/theme.min.css
elFinder.AspNet.Web/wwwroot/css/elfinder/themes/material/icons/material.svg
elFinder.AspNet.Web/wwwroot/css/elfinder/themes/material/images/icons-big.svg
elFinder.AspNet.Web/wwwroot/css/elfinder/themes/material/images/icons-small.svg
elFinder.AspNet.Web/wwwroot/css/elfinder/themes/material/images/loading.svg
elFinder.AspNet.Web/wwwroot/css/elfinder/themes/moono/css/contextmenu.less
elFinder.AspNet.Web/wwwroot/css/elfinder/themes/moono/css/dialog.less
elFinder.AspNet.Web/wwwroot/css/elfinder/themes/moono/css/file-icons.less
elFinder.AspNet.Web/wwwroot/css/elfinder/themes/moono/css/mainui.less
elFinder.AspNet.Web/wwwroot/css/elfinder/themes/moono/css/navbar-icons.less
elFinder.AspNet.Web/wwwroot/css/elfinder/themes/moono/css/navbar-restrict.less
elFinder.AspNet.Web/wwwroot/css/elfinder/themes/moono/css/navbar.less
elFinder.AspNet.Web/wwwroot/css/elfinder/themes/moono/css/statusbar.less
elFinder.AspNet.Web/wwwroot/css/elfinder/themes/moono/css/theme.css
elFinder.AspNet.Web/wwwroot/css/elfinder/themes/moono/css/theme.less
elFinder.AspNet.Web/wwwroot/css/elfinder/themes/moono/css/toolbar-icons.less
elFinder.AspNet.Web/wwwroot/css/elfinder/themes/moono/css/toolbar.less
elFinder.AspNet.Web/wwwroot/css/elfinder/themes/moono/css/view-icons.less
elFinder.AspNet.Web/wwwroot/css/elfinder/themes/moono/css/view-list.less
elFinder.AspNet.Web/wwwroot/css/elfinder/themes/moono/css/view.less
elFinder.AspNet.Web/wwwroot/css/elfinder/themes/windows-10/LICENSE
elFinder.AspNet.Web/wwwroot/css/elfinder/themes/windows-10/css/README.md
elFinder.AspNet.Web/wwwroot/css/elfinder/themes/windows-10/css/contextmenu.css
elFinder.AspNet.Web/wwwroot/css/elfinder/themes/windows-10/css/dialog.css
elFinder.AspNet.Web/wwwroot/css/elfinder/themes/windows-10/css/icons.css
elFinder.AspNet.Web/wwwroot/css/elfinder/themes/windows-10/css/main.css
elFinder.AspNet.Web/wwwroot/css/elfinder/themes/windows-10/css/navbar.css
elFinder.AspNet.Web/wwwroot/css/elfinder/themes/windows-10/css/reset.css
elFinder.AspNet.Web/wwwroot/css/elfinder/themes/windows-10/css/statusbar.css
elFinder.AspNet.Web/wwwroot/css/elfinder/themes/windows-10/css/theme.css
elFinder.AspNet.Web/wwwroot/css/elfinder/themes/windows-10/css/toolbar.css
elFinder.AspNet.Web/wwwroot/css/elfinder/themes/windows-10/css/view-list.css
elFinder.AspNet.Web/wwwroot/css/elfinder/themes/windows-10/css/view-thumbnail.css
elFinder.AspNet.Web/wwwroot/css/elfinder/themes/windows-10/images/README.md
elFinder.AspNet.Web/wwwroot/css/elfinder/themes/windows-10/js/README.md
elFinder.AspNet.Web/wwwroot/css/site.css
elFinder.AspNet.Web/wwwroot/css/site.min.css
elFinder.AspNet.Web/wwwroot/js/site.js
elFinder.AspNet.sln
elFinder.AspNet/Connector.cs
elFinder.AspNet/ConnectorResult.cs
elFinder.AspNet/Drawing/DefaultPictureEditor.cs
elFinder.AspNet/Drawing/IPictureEditor.cs
elFinder.AspNet/Drawing/ImageWithMimeType.cs
elFinder.AspNet/Drivers/BaseDriver.cs
elFinder.AspNet/Drivers/FileSystem/FileSystemDirectory.cs
elFinder.AspNet/Drivers/FileSystem/FileSystemDriver.cs
elFinder.AspNet/Drivers/FileSystem/FileSystemFile.cs
elFinder.AspNet/Drivers/IDirectory.cs
elFinder.AspNet/Drivers/IDriver.cs
elFinder.AspNet/Drivers/IFile.cs
elFinder.AspNet/Drivers/IFileExtensions.cs
elFinder.AspNet/Extensions.cs
elFinder.AspNet/FullPath.cs
elFinder.AspNet/Helpers/HttpEncoder.cs
elFinder.AspNet/Helpers/MimeHelper.cs
elFinder.AspNet/Helpers/MimeTypeMap.cs
elFinder.AspNet/Models/BaseModel.cs
elFinder.AspNet/Models/Commands/AddResponseModel.cs
elFinder.AspNet/Models/Commands/ChangedResponseModel.cs
elFinder.AspNet/Models/Commands/DimResponseModel.cs
elFinder.AspNet/Models/Commands/GetResponseModel.cs
elFinder.AspNet/Models/Commands/ListResponseModel.cs
elFinder.AspNet/Models/Commands/Open/BaseOpenResponseModel.cs
elFinder.AspNet/Models/Commands/Open/DebugResponseModel.cs
elFinder.AspNet/Models/Commands/Open/InitResponseModel.cs
elFinder.AspNet/Models/Commands/Open/OpenResponseModel.cs
elFinder.AspNet/Models/Commands/Open/Options.cs
elFinder.AspNet/Models/Commands/Open/uploadMimeModel.cs
elFinder.AspNet/Models/Commands/PutResponseModel.cs
elFinder.AspNet/Models/Commands/RemoveResponseModel.cs
elFinder.AspNet/Models/Commands/ReplaceResponseModel.cs
elFinder.AspNet/Models/Commands/SearchResponseModel.cs
elFinder.AspNet/Models/Commands/SizeResponseModel.cs
elFinder.AspNet/Models/Commands/ThumbsResponseModel.cs
elFinder.AspNet/Models/Commands/TreeResponseModel.cs
elFinder.AspNet/Models/DirectoryModel.cs
elFinder.AspNet/Models/FileContent.cs
elFinder.AspNet/Models/FileModel.cs
elFinder.AspNet/Models/ImageModel.cs
elFinder.AspNet/Models/MimeType.cs
elFinder.AspNet/Models/RootModel.cs
elFinder.AspNet/Properties/launchSettings.json
elFinder.AspNet/RootVolume.cs
elFinder.AspNet/elFinder.AspNet.csproj
elFinder.AspNet/mimeTypes.txt
Commit message: Directory traversal fixes


Vulnerable code:

Fixed code:
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
##
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore

# User-specific files
*.rsuser
*.suo
*.user
*.userosscache
*.sln.docstates

# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs

# Mono auto generated files
mono_crash.*

# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
[Aa][Rr][Mm]/
[Aa][Rr][Mm]64/
bld/
[Bb]in/
[Oo]bj/
[Ll]og/
[Ll]ogs/

# Visual Studio 2015/2017 cache/options directory
.vs/
# Uncomment if you have tasks that create the project's static files in wwwroot
#wwwroot/

elFinder.AspNet.Web/wwwroot/Files/
elFinder.AspNet.Web/wwwroot/lib/

# Visual Studio 2017 auto generated files
Generated\ Files/

# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*

# NUnit
*.VisualState.xml
TestResult.xml
nunit-*.xml

# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c

# Benchmark Results
BenchmarkDotNet.Artifacts/

# .NET Core
project.lock.json
project.fragment.lock.json
artifacts/

# StyleCop
StyleCopReport.xml

# Files built by Visual Studio
*_i.c
*_p.c
*_h.h
*.ilk
*.meta
*.obj
*.iobj
*.pch
*.pdb
*.ipdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*_wpftmp.csproj
*.log
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog
*.scc

# Chutzpah Test files
_Chutzpah*

# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opendb
*.opensdf
*.sdf
*.cachefile
*.VC.db
*.VC.VC.opendb

# Visual Studio profiler
*.psess
*.vsp
*.vspx
*.sap

# Visual Studio Trace Files
*.e2e

# TFS 2012 Local Workspace
$tf/

# Guidance Automation Toolkit
*.gpState

# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user

# TeamCity is a build add-in
_TeamCity*

# DotCover is a Code Coverage Tool
*.dotCover

# AxoCover is a Code Coverage Tool
.axoCover/*
!.axoCover/settings.json

# Visual Studio code coverage results
*.coverage
*.coveragexml

# NCrunch
_NCrunch_*
.*crunch*.local.xml
nCrunchTemp_*

# MightyMoose
*.mm.*
AutoTest.Net/

# Web workbench (sass)
.sass-cache/

# Installshield output folder
[Ee]xpress/

# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html

# Click-Once directory
publish/

# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
# Note: Comment the next line if you want to checkin your web deploy settings,
# but database connection strings (with potential passwords) will be unencrypted
*.pubxml
*.publishproj

# Microsoft Azure Web App publish settings. Comment the next line if you want to
# checkin your Azure Web App publish settings, but sensitive information contained
# in these scripts will be unencrypted
PublishScripts/

# NuGet Packages
*.nupkg
# NuGet Symbol Packages
*.snupkg
# The packages folder can be ignored because of Package Restore
**/[Pp]ackages/*
# except build/, which is used as an MSBuild target.
!**/[Pp]ackages/build/
# Uncomment if necessary however generally it will be regenerated when needed
#!**/[Pp]ackages/repositories.config
# NuGet v3's project.json files produces more ignorable files
*.nuget.props
*.nuget.targets

# Microsoft Azure Build Output
csx/
*.build.csdef

# Microsoft Azure Emulator
ecf/
rcf/

# Windows Store app package directories and files
AppPackages/
BundleArtifacts/
Package.StoreAssociation.xml
_pkginfo.txt
*.appx
*.appxbundle
*.appxupload

# Visual Studio cache files
# files ending in .cache can be ignored
*.[Cc]ache
# but keep track of directories ending in .cache
!?*.[Cc]ache/

# Others
ClientBin/
~$*
*~
*.dbmdl
*.dbproj.schemaview
*.jfm
*.pfx
*.publishsettings
orleans.codegen.cs

# Including strong name files can present a security risk
# (https://github.com/github/gitignore/pull/2483#issue-259490424)
#*.snk

# Since there are multiple workflows, uncomment next line to ignore bower_components
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
#bower_components/

# RIA/Silverlight projects
Generated_Code/

# Backup & report files from converting an old project file
# to a newer Visual Studio version. Backup files are not needed,
# because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm
ServiceFabricBackup/
*.rptproj.bak

# SQL Server files
*.mdf
*.ldf
*.ndf

# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings
*.rptproj.rsuser
*- [Bb]ackup.rdl
*- [Bb]ackup ([0-9]).rdl
*- [Bb]ackup ([0-9][0-9]).rdl

# Microsoft Fakes
FakesAssemblies/

# GhostDoc plugin setting file
*.GhostDoc.xml

# Node.js Tools for Visual Studio
.ntvs_analysis.dat
node_modules/

# Visual Studio 6 build log
*.plg

# Visual Studio 6 workspace options file
*.opt

# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
*.vbw

# Visual Studio LightSwitch build output
**/*.HTMLClient/GeneratedArtifacts
**/*.DesktopClient/GeneratedArtifacts
**/*.DesktopClient/ModelManifest.xml
**/*.Server/GeneratedArtifacts
**/*.Server/ModelManifest.xml
_Pvt_Extensions

# Paket dependency manager
.paket/paket.exe
paket-files/

# FAKE - F# Make
.fake/

# CodeRush personal settings
.cr/personal

# Python Tools for Visual Studio (PTVS)
__pycache__/
*.pyc

# Cake - Uncomment if you are using it
# tools/**
# !tools/packages.config

# Tabs Studio
*.tss

# Telerik's JustMock configuration file
*.jmconfig

# BizTalk build output
*.btp.cs
*.btm.cs
*.odx.cs
*.xsd.cs

# OpenCover UI analysis results
OpenCover/

# Azure Stream Analytics local run output
ASALocalRun/

# MSBuild Binary and Structured Log
*.binlog

# NVidia Nsight GPU debugger configuration file
*.nvuser

# MFractors (Xamarin productivity tool) working folder
.mfractor/

# Local History for Visual Studio
.localhistory/

# BeatPulse healthcheck temp database
healthchecksdb

# Backup folder for Package Reference Convert tool in Visual Studio 2017
MigrationBackup/

# Ionide (cross platform F# VS Code tools) working folder
.ionide/
BSD 2-Clause License

Copyright (c) 2021, EvgenNoskov, gordon-matt, mguinness
All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:

1. Redistributions of source code must retain the above copyright notice, this
   list of conditions and the following disclaimer.

2. Redistributions in binary form must reproduce the above copyright notice,
   this list of conditions and the following disclaimer in the documentation
   and/or other materials provided with the distribution.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
# ASP.NET MVC 5

The example controller below demonstrates the usage of the .NET Standard library within MVC 5 projects.

```C#
[RoutePrefix("el-finder/file-system")]
public class FileSystemController : Controller
{
    [HttpGet, Route("connector")]
    public async Task<ActionResult> Connector()
    {
        var connector = GetConnector();

        var parameters = Request.QueryString.Keys.Cast<string>().ToDictionary(k => k, v => (StringValues)Request.QueryString[v]);

        var result = (await connector.ProcessAsync(parameters)).Value;
        if (result is FileContent)
        {
            var file = result as FileContent;
            return File(file.ContentStream, file.ContentType);
        }
        else
        {
            return Content(JsonSerializer.Serialize(result), "application/json");
        }
    }

    [HttpPost, Route("connector")]
    public async Task<ActionResult> ConnectorPost()
    {
        var connector = GetConnector();

        var parameters = Request.Form.Keys.Cast<string>().ToDictionary(k => k, v => (StringValues)Request.Form[v]);

        if (Request.Files.Count > 0)
        {
            var files = new List<FileContent>();
            //https://stackoverflow.com/questions/1760510/foreach-on-request-files
            foreach (string fileName in Request.Files)
            {
                var file = Request.Files[fileName];
                files.Add(new FileContent
                {
                    Length = file.ContentLength,
                    ContentStream = file.InputStream,
                    ContentType = file.ContentType,
                    FileName = file.FileName
                });
            }
            return Content(JsonSerializer.Serialize((await connector.ProcessAsync(parameters, files)).Value), "application/json");
        }
        else
        {
            return Content(JsonSerializer.Serialize((await connector.ProcessAsync(parameters)).Value), "application/json");
        }
    }

    [HttpGet, Route("thumb/{hash}")]
    public async Task<ActionResult> Thumbs(string hash)
    {
        var connector = GetConnector();

        var result = (await connector.GetThumbnailAsync(hash)).Value;
        if (result is ImageWithMimeType)
        {
            var file = result as ImageWithMimeType;
            return File(file.ImageStream, file.MimeType);
        }
        else
        {
            return Content(JsonSerializer.Serialize(result), "application/json");
        }
    }

    private Connector GetConnector()
    {
        var driver = new FileSystemDriver();

        var root = new RootVolume(
            Server.MapPath("~/Files"),
            $"{Request.Url.Scheme}://{Request.Url.Authority}/Files/",
            $"{Request.Url.Scheme}://{Request.Url.Authority}/el-finder/file-system/thumb/")
        {
            //IsReadOnly = !User.IsInRole(AccountController.SuperUser)
            IsReadOnly = false, // Can be readonly according to user's membership permission
            IsLocked = false, // If locked, files and directories cannot be deleted, renamed or moved
            Alias = "Files", // Beautiful name given to the root/home folder
            //MaxUploadSizeInKb = 2048, // Limit imposed to user uploaded file <= 2048 KB
            //LockedFolders = new List<string>(new string[] { "Folder1" })
        };

        driver.AddRoot(root);

        return new Connector(driver)
        {
            // This allows support for the "onlyMimes" option on the client.
            MimeDetect = MimeDetectOption.Internal
        };
    }
}
```
# elFinder.AspNet

[elFinder](http://elfinder.org/) is an open-source file manager for web, written in JavaScript using jQuery and jQuery UI.  This repo is a 3rd party volume driver for .NET and is derived from project [elFinder.NetCore](https://github.com/gordon-matt/elFinder.NetCore) which itself was derived from the earlier work of the [Elfinder.NET](https://github.com/EvgenNoskov/Elfinder.NET) project.

![Screenshot](https://user-images.githubusercontent.com/1412630/47564735-f4af0a00-d960-11e8-9f89-d036d092c1b9.png)

This project is packaged as a .NET Standard 2.0 library which means it can be used with ASP.NET Core 2.x and later.  In addition it can also be used with MVC 5 projects using .NET Framework 4.6.x and later.

## Usage

Install the [elFinder.AspNet](https://www.nuget.org/packages/elFinder.AspNet/) NuGet package into your project.

For ASP.NET Core projects see the sample project, in particular the [FileSystemController](elFinder.AspNet.Web/Controllers/FileSystemController.cs) class.

For MVC 5 projects see [example](MVC5.md) that contains the FileSystemController class compatible for that framework.

## Logging

It's easy to log activity with the returned object from `ProcessAsync()` after checking that no error occurred.

```C#
var result = await connector.ProcessAsync(parameters);
if (result.Succeeded)
    await LogCmdAsync(parameters["cmd"], result.Value);
```

The following method is a basic example of some commands being logged.

```C#
private async Task LogCmdAsync(string command, object result)
{
    switch (command)
    {
        case "mkdir":
            var make = result as AddResponseModel;
            foreach (BaseModel item in make.Added)
                Trace.TraceInformation("elFinder created {name}", await connector.GetPathByHashAsync(item.Hash));
            break;
        case "paste":
            var replace = result as ReplaceResponseModel;
            foreach (BaseModel item in replace.Added)
                Trace.TraceInformation"elFinder pasted {name}", await connector.GetPathByHashAsync(item.Hash));
            break;
        case "rename":
            var rename = result as ReplaceResponseModel;
            var i = 0;
            foreach (BaseModel item in rename.Added)
                Trace.TraceInformation("elFinder renamed {old} to {new}", await connector.GetPathByHashAsync(rename.Removed[i++]), await connector.GetPathByHashAsync(item.Hash));
            break;
        case "rm":
            var remove = result as RemoveResponseModel;
            foreach (string item in remove.Removed)
                Trace.TraceInformation("elFinder removed {name}", await connector.GetPathByHashAsync(item));
            break;
        case "upload":
            var add = result as AddResponseModel;
            foreach (BaseModel item in add.Added.Where(a => a is FileModel))
                Trace.TraceInformation("elFinder added {name}", await connector.GetPathByHashAsync(item.Hash));
            break;
    }
}
```

## Custom Info

elFinder provides extensibility and one example is including additional information in the info dialog.  First add the following to the [commandsOptions](https://github.com/Studio-42/elFinder/wiki/Client-configuration-options-2.1#commandsOptions) section of client configuration options.

```JS
info: {
    custom: {
        created: {
            label: 'Created',
            tpl: '<div class="elfinder-info-created"><span class="elfinder-spinner"></span></div>',
            action: function (file, fm, dialog) {
                fm.request({
                    data: { cmd: 'info', target: file.hash },
                    preventDefault: true
                })
                .done(function (data) {
                    dialog.find('div.elfinder-info-created').html(fm.formatDate(file, data.timestamp));
                })
                .fail(function () {
                    dialog.find('div.elfinder-info-created').html(fm.i18n('unknown'));
                });
            }
        }
    }
}
```

Then add the following before `ProcessAsync()` in the `Connector` action of `FileSystemController` to return the file system created date of the object requested by elFinder.

```C#
if (parameters["cmd"] == "info")
{
    var path = await connector.GetPathByHashAsync(parameters["target"]);

    var dt = path.EndsWith(Path.DirectorySeparatorChar) ? Directory.GetCreationTimeUtc(path) : File.GetCreationTimeUtc(path);
    var ts = (long)dt.Subtract(DateTime.UnixEpoch).TotalSeconds;

    return Json(new { timestamp = ts });
}
```
﻿using Microsoft.AspNetCore.Mvc;

namespace elFinder.AspNet.Web.Controllers
{
    [Route("file-manager")]
    public class FileManagerController : Controller
    {
        public IActionResult Index()
        {
            return View();
        }
    }
}
﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using elFinder.AspNet.Drawing;
using elFinder.AspNet.Drivers.FileSystem;
using elFinder.AspNet.Models;
using Microsoft.AspNetCore.Http.Extensions;
using Microsoft.AspNetCore.Mvc;

namespace elFinder.AspNet.Web.Controllers
{
    [Route("el-finder/file-system")]
    public class FileSystemController : Controller
    {
        [HttpGet("connector")]
        public async Task<IActionResult> Connector()
        {
            var connector = GetConnector();

            var parameters = Request.Query.ToDictionary(k => k.Key, v => v.Value);

            var result = (await connector.ProcessAsync(parameters)).Value;
            if (result is FileContent)
            {
                var file = result as FileContent;
                return File(file.ContentStream, file.ContentType);
            }
            else
            {
                return Json(result);
            }
        }
        
        [HttpPost("connector")] // put/upload are HTTP POST
        public async Task<IActionResult> ConnectorPost()
        {
            var connector = GetConnector();

            var parameters = Request.Form.ToDictionary(k => k.Key, v => v.Value);

            if (Request.Form.Files.Count > 0)
            {
                var files = new List<FileContent>();
                foreach (var file in Request.Form.Files)
                {
                    files.Add(new FileContent
                    {
                        Length = file.Length,
                        ContentStream = file.OpenReadStream(),
                        ContentType = file.ContentType,
                        FileName = file.FileName
                    });
                }
                return Json((await connector.ProcessAsync(parameters, files)).Value);
            }
            else
            {
                return Json((await connector.ProcessAsync(parameters)).Value);
            }
        }

        [HttpGet("thumb/{hash}")]
        public async Task<IActionResult> Thumbs(string hash)
        {
            var connector = GetConnector();

            var result = (await connector.GetThumbnailAsync(hash)).Value;
            if (result is ImageWithMimeType)
            {
                var file = result as ImageWithMimeType;
                return File(file.ImageStream, file.MimeType);
            }
            else
            {
                return Json(result);
            }
        }

        private Connector GetConnector()
        {
            var driver = new FileSystemDriver();

            string absoluteUrl = UriHelper.BuildAbsolute(Request.Scheme, Request.Host);
            var uri = new Uri(absoluteUrl);

            var root = new RootVolume(
                Startup.MapPath("~/Files"),
                $"{uri.Scheme}://{uri.Authority}/Files/",
                $"{uri.Scheme}://{uri.Authority}/el-finder/file-system/thumb/")
            {
                //IsReadOnly = !User.IsInRole("Administrators")
                IsReadOnly = false, // Can be readonly according to user's membership permission
                IsLocked = false, // If locked, files and directories cannot be deleted, renamed or moved
                Alias = "Files", // Beautiful name given to the root/home folder
                //MaxUploadSizeInKb = 2048, // Limit imposed to user uploaded file <= 2048 KB
                //LockedFolders = new List<string>(new string[] { "Folder1" })
            };

            driver.AddRoot(root);

            return new Connector(driver)
            {
                // This allows support for the "onlyMimes" option on the client.
                MimeDetect = MimeDetectOption.Internal
            };
        }
    }
}
﻿using Microsoft.AspNetCore.Mvc;

namespace elFinder.AspNet.Web.Controllers
{
    public class HomeController : Controller
    {
        [Route("")]
        public IActionResult Index()
        {
            return View();
        }

        [Route("error")]
        public IActionResult Error()
        {
            return View();
        }
    }
}
﻿using Microsoft.AspNetCore.Mvc;

namespace elFinder.AspNet.Web.Controllers
{
    [Route("tiny-mce")]
    public class TinyMCEController : Controller
    {
        public IActionResult Index()
        {
            return View();
        }

        [Route("browse")]
        public IActionResult Browse()
        {
            return View();
        }
    }
}
﻿using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Hosting;

namespace elFinder.AspNet.Web
{
    public class Program
    {
        public static void Main(string[] args)
        {
            CreateHostBuilder(args).Build().Run();
        }

        public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseStartup<Startup>();
                });
    }
}
{
  "iisSettings": {
    "windowsAuthentication": false,
    "anonymousAuthentication": true,
    "iisExpress": {
      "applicationUrl": "http://localhost:65488/",
      "sslPort": 44370
    }
  },
  "profiles": {
    "IIS Express": {
      "commandName": "IISExpress",
      "launchBrowser": true,
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    },
    "elFinder.AspNet.Web": {
      "commandName": "Project",
      "launchBrowser": true,
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      },
      "applicationUrl": "https://localhost:5001;http://localhost:5000"
    }
  }
}
﻿using System.IO;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;

namespace elFinder.AspNet.Web
{
    public class Startup
    {
        public static string WebRootPath { get; private set; }

        public static string MapPath(string path, string basePath = null)
        {
            if (string.IsNullOrEmpty(basePath))
            {
                basePath = WebRootPath;
            }

            path = path.Replace("~/", "").TrimStart('/').Replace('/', '\\');
            return Path.Combine(basePath, path);
        }

        public Startup(IConfiguration configuration)
        {
            Configuration = configuration;
        }

        public IConfiguration Configuration { get; }

        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddControllersWithViews();
        }

        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            else
            {
                app.UseExceptionHandler("/error");
                app.UseHsts();
            }

            app.UseHttpsRedirection();
            app.UseStaticFiles();
            app.UseRouting();

            app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllerRoute("default", "{controller=Home}/{action=Index}/{id?}");
            });

            WebRootPath = env.WebRootPath;
        }
    }
}
﻿@{
    ViewBag.Title = "File Manager";
}

<div id="elfinder"></div>

@section scripts {
    <script type="text/javascript">
		// Documentation for client options:
		// https://github.com/Studio-42/elFinder/wiki/Client-configuration-options
        $(document).ready(function () {
            var myCommands = elFinder.prototype._options.commands;
            var disabled = ['callback', 'chmod', 'editor', 'netmount', 'ping', 'zipdl', 'help']; // Not yet implemented commands in elFinder.AspNet
            elFinder.prototype.i18.en.messages.TextArea = "Edit";

            $.each(disabled, function (i, cmd) {
                (idx = $.inArray(cmd, myCommands)) !== -1 && myCommands.splice(idx, 1);
            });

            var options = {
                url: '/el-finder/file-system/connector', // Default (Local File System)
                soundPath: '/',
                @*//customData: { folder: '@Model.Folder', subFolder: '@Model.SubFolder' }, // customData passed in every request to the connector as query strings. These values are used in FileController's Index method.*@
                rememberLastDir: false, // Prevent elFinder saving in the Browser LocalStorage the last visited directory
                commands: myCommands,
                //lang: 'pt_BR', // elFinder supports UI and messages localization. Check the folder Content\elfinder\js\i18n for all available languages. Be sure to include the corresponding .js file(s) in the JavaScript bundle.
                uiOptions: { // UI buttons available to the user
                    toolbar: [
                        ['back', 'forward'],
                        ['reload'],
                        ['home', 'up'],
                        ['mkdir', 'mkfile', 'upload'],
                        ['open', 'download'],
                        ['undo', 'redo'],
                        ['info'],
                        ['quicklook'],
                        ['copy', 'cut', 'paste'],
                        ['rm'],
                        ['duplicate', 'rename', 'edit'],
                        ['selectall', 'selectnone', 'selectinvert'],
                        ['view', 'sort'],
                        ['search']
                    ]
                },
                //onlyMimes: ["image", "text/plain"] // Get files of requested mime types only
                //lang: 'vi', // Change language
            };
            $('#elfinder').elfinder(options).elfinder('instance');
        });
    </script>
}
﻿@{
	ViewData["Title"] = "Home Page";
}

elFinder.NET Core Backend. Select an option from the menu.
﻿@{
    ViewData["Title"] = "Error";
}

<h1 class="text-danger">Error.</h1>
<h2 class="text-danger">An error occurred while processing your request.</h2>

<h3>Development Mode</h3>
<p>
    Swapping to <strong>Development</strong> environment will display more detailed information about the error that occurred.
</p>
<p>
    <strong>Development environment should not be enabled in deployed applications</strong>, as it can result in sensitive information from exceptions being displayed to end users. For local debugging, development environment can be enabled by setting the <strong>ASPNETCORE_ENVIRONMENT</strong> environment variable to <strong>Development</strong>, and restarting the application.
</p>
﻿<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>@ViewData["Title"] - elFinder.AspNet.Web</title>

    <environment names="Development">
        <link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.css" />
        <link rel="stylesheet" href="~/css/site.css" />
    </environment>
    <environment names="Staging,Production">
        <link rel="stylesheet" href="https://ajax.aspnetcdn.com/ajax/bootstrap/3.3.7/css/bootstrap.min.css"
              asp-fallback-href="~/lib/bootstrap/dist/css/bootstrap.min.css"
              asp-fallback-test-class="sr-only" asp-fallback-test-property="position" asp-fallback-test-value="absolute" />
        <link rel="stylesheet" href="~/css/site.min.css" asp-append-version="true" />
    </environment>

    <link rel="stylesheet" href="~/lib/jquery-ui/themes/base/theme.css" />
    <link rel="stylesheet" href="~/lib/jquery-ui/themes/base/jquery-ui.css" />
    <link rel="stylesheet" href="~/lib/elfinder/css/elfinder.full.css" />
    <link rel="stylesheet" href="~/lib/elfinder/css/theme.css" /> @* <-- NOTE: This file is new and some of the themes may not look quite right if this is used. *@
    <link rel="stylesheet" href="~/css/elfinder/themes/material/css/theme-gray.css" id="elfinder-theme" />

    <style>
        .elfinder-cwd table td {
            /* fix conflict with Bootstrap CSS. See: https://github.com/Studio-42/elFinder/commit/4f858d5ffc9a8f41b4cc07a063782abe2e722bdf */
            box-sizing: content-box;
        }
    </style>
</head>
<body>
    <nav class="navbar navbar-inverse navbar-fixed-top">
        <div class="container">
            <div class="navbar-header">
                <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
                    <span class="sr-only">Toggle navigation</span>
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                </button>
                <a asp-area="" asp-controller="Home" asp-action="Index" class="navbar-brand">
                    elFinder.Net Web
                </a>
            </div>
            <div class="navbar-collapse collapse">
                <ul class="nav navbar-nav">
                    <li><a asp-area="" asp-controller="Home" asp-action="Index">Home</a></li>
                    <li><a asp-area="" asp-controller="FileManager" asp-action="Index">Files</a></li>
                    <li><a asp-area="" asp-controller="TinyMCE" asp-action="Index">TinyMCE</a></li>
                </ul>
                <ul class="nav navbar-nav navbar-right">
                    <li class="dropdown">
                        <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Theme <span class="caret"></span></a>
                        <ul class="dropdown-menu">
                            <li><a href="javascript:void(0);" onclick="switchTheme('/css/elfinder/themes/windows-10/css/theme.css')">Windows 10</a></li>
                            <li><a href="javascript:void(0);" onclick="switchTheme('/css/elfinder/themes/bootstrap-LibreICONS/css/theme-bootstrap-libreicons-svg.css')">Bootstrap</a></li>
                            <li><a href="javascript:void(0);" onclick="switchTheme('/css/elfinder/themes/material/css/theme.css')">Material</a></li>
                            <li><a href="javascript:void(0);" onclick="switchTheme('/css/elfinder/themes/material/css/theme-gray.css')">Material - Gray</a></li>
                            <li><a href="javascript:void(0);" onclick="switchTheme('/css/elfinder/themes/material/css/theme-light.css')">Material - Light</a></li>
                            <li><a href="javascript:void(0);" onclick="switchTheme('/css/elfinder/themes/moono/css/theme.css')">Moono</a></li>
                            <li><a href="javascript:void(0);" onclick="switchTheme('#')">Default</a></li>
                        </ul>
                    </li>
                </ul>
            </div>
        </div>
    </nav>
    <div class="container body-content">
        @RenderBody()
        <hr />
        <footer>
            <p>&copy; @DateTime.Now.Year - elFinder.AspNet.Web</p>
        </footer>
    </div>

    <environment names="Development">
        <script src="~/lib/jquery/dist/jquery.js"></script>
        <script src="~/lib/bootstrap/dist/js/bootstrap.js"></script>
        <script src="~/js/site.js" asp-append-version="true"></script>
    </environment>
    <environment names="Staging,Production">
        @*<script src="https://ajax.aspnetcdn.com/ajax/jquery/jquery-2.2.0.min.js"
                asp-fallback-src="~/lib/jquery/dist/jquery.min.js"
                asp-fallback-test="window.jQuery">
        </script>*@
        <script src="https://ajax.aspnetcdn.com/ajax/bootstrap/3.3.7/bootstrap.min.js"
                asp-fallback-src="~/lib/bootstrap/dist/js/bootstrap.min.js"
                asp-fallback-test="window.jQuery && window.jQuery.fn && window.jQuery.fn.modal">
        </script>
        <script src="~/js/site.min.js" asp-append-version="true"></script>
    </environment>

    <script src="~/lib/jquery-ui/jquery-ui.min.js"></script>
    <script src="~/lib/elfinder/js/elfinder.full.js"></script>

    <script type="text/javascript">
        function switchTheme(href) {
            $('link#elfinder-theme').attr('href', href);
        }
    </script>

    @RenderSection("scripts", required: false)
</body>
</html>
﻿@{
    Layout = null;
}

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>File Browser</title>
    <link rel="stylesheet" type="text/css" href="~/lib/jquery-ui/themes/base/all.css" />
    <link rel="stylesheet" type="text/css" href="~/lib/elfinder/css/elfinder.min.css" />
    <link rel="stylesheet" href="~/lib/elfinder/css/theme.css" />
    <link rel="stylesheet" href="~/css/elfinder/themes/material/css/theme-gray.css" />

</head>
<body>
    <div id="elfinder"></div>

    <script src="~/lib/jquery/dist/jquery.min.js"></script>
    <script src="~/lib/jquery-ui/jquery-ui.min.js"></script>
    <script src="~/lib/elfinder/js/elfinder.min.js"></script>

    <script type="text/javascript">

        $(function () {
            var myCommands = elFinder.prototype._options.commands;

            var disabled = ['extract', 'archive', 'resize', 'help', 'select']; // Not yet implemented commands in ElFinder.Net

            $.each(disabled, function (i, cmd) {
                (idx = $.inArray(cmd, myCommands)) !== -1 && myCommands.splice(idx, 1);
            });

            var options = {
				url: '/el-finder/file-system/connector', // Default (Local File System)
				//url: '/el-finder/azure-storage/connector', // Microsoft Azure Connector
                rememberLastDir: false, // Prevent elFinder saving in the Browser LocalStorage the last visited directory
                commands: myCommands,
                //lang: 'pt_BR', // elFinder supports UI and messages localization. Check the folder Content\elfinder\js\i18n for all available languages. Be sure to include the corresponding .js file(s) in the JavaScript bundle.
                uiOptions: { // UI buttons available to the user
                    toolbar: [
                        ['back', 'forward'],
                        ['reload'],
                        ['home', 'up'],
                        ['mkdir', 'mkfile', 'upload'],
                        ['open', 'download'],
                        ['undo', 'redo'],
                        ['info'],
                        ['quicklook'],
                        ['copy', 'cut', 'paste'],
                        ['rm'],
                        ['duplicate', 'rename', 'edit'],
                        ['selectall', 'selectnone', 'selectinvert'],
                        ['view', 'sort']
                    ]
                },
                getFileCallback: function (file, fm) { // editor callback (see: https://github.com/Studio-42/elFinder/wiki/Integration-with-TinyMCE-4.x)
                    // pass selected file data to TinyMCE
                    parent.tinymce.activeEditor.windowManager.getParams().oninsert(file, fm);
                    // close popup window
                    parent.tinymce.activeEditor.windowManager.close();
                }
            };
            $('#elfinder').elfinder(options).elfinder('instance');
        });
    </script>

</body>
</html>
﻿<textarea></textarea>

@*<script src="~/lib/tinymce/jquery.tinymce.min.js"></script>*@
<script src="~/lib/tinymce-dist/tinymce.min.js"></script>

<script type="text/javascript">
    tinymce.init({
        selector: "textarea", theme: "modern", height: 300,
        plugins: [
                "advlist autolink link image lists charmap print preview hr anchor pagebreak",
                "searchreplace wordcount visualblocks visualchars insertdatetime media nonbreaking",
                "table contextmenu directionality emoticons paste textcolor"
        ],
        toolbar1: "undo redo | bold italic underline | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | styleselect",
        toolbar2: "| link unlink anchor | image media | forecolor backcolor  | print preview code ",
        image_advtab: true,
        file_picker_callback: elFinderBrowser
    });

    // https://github.com/Studio-42/elFinder/wiki/Integration-with-TinyMCE-4.x
    function elFinderBrowser(callback, value, meta) {
        tinymce.activeEditor.windowManager.open({
            file: '/tiny-mce/browse',
            title: 'File Manager',
            width: 900,
            height: 450,
            resizable: 'yes'
        }, {
        oninsert: function (file, fm) {
            var url, reg, info;

            // URL normalization
            url = fm.convAbsUrl(file.url);

            // Make file info
            info = file.name + ' (' + fm.formatSize(file.size) + ')';

            // Provide file and text for the link dialog
            if (meta.filetype == 'file') {
                callback(url, { text: info, title: info });
            }

            // Provide image and alt text for the image dialog
            if (meta.filetype == 'image') {
                callback(url, { alt: info });
            }

            // Provide alternative source and posted for the media dialog
            if (meta.filetype == 'media') {
                callback(url);
            }
        }
        });
        return false;
    }
</script>
@using elFinder.AspNet.Web
@*@using elFinder.AspNet.Web.Models*@
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
﻿@{
    Layout = "_Layout";
}
﻿{
  "Logging": {
    "IncludeScopes": false,
    "LogLevel": {
      "Default": "Debug",
      "System": "Information",
      "Microsoft": "Information"
    }
  }
}
﻿{
  "Logging": {
    "IncludeScopes": false,
    "LogLevel": {
      "Default": "Warning"
    }
  }
}
﻿// Configure bundling and minification for the project.
// More info at https://go.microsoft.com/fwlink/?LinkId=808241
[
  {
    "outputFileName": "wwwroot/css/site.min.css",
    // An array of relative input file paths. Globbing patterns supported
    "inputFiles": [
      "wwwroot/css/site.css"
    ]
  },
  {
    "outputFileName": "wwwroot/js/site.min.js",
    "inputFiles": [
      "wwwroot/js/site.js"
    ],
    // Optionally specify minification options
    "minify": {
      "enabled": true,
      "renameLocals": true
    },
    // Optionally generate .map file
    "sourceMap": false
  }
]
﻿<Project Sdk="Microsoft.NET.Sdk.Web">
  <PropertyGroup>
    <TargetFramework>net5.0</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <ProjectReference Include="..\elFinder.AspNet\elFinder.AspNet.csproj" />
  </ItemGroup>
</Project>
{
  "version": "1.0",
  "defaultProvider": "cdnjs",
  "libraries": [
    {
      "library": "twitter-bootstrap@3.3.7",
      "destination": "wwwroot/lib/bootstrap/dist"
    },
    {
      "library": "jquery@2.2.0",
      "destination": "wwwroot/lib/jquery/dist"
    },
    {
      "library": "jquery-validate@1.14.0",
      "destination": "wwwroot/lib/jquery-validate"
    },
    {
      "library": "jquery-validation-unobtrusive@3.2.6",
      "destination": "wwwroot/lib/jquery-validation-unobtrusive"
    },
    {
      "library": "tinymce@4.7.7",
      "destination": "wwwroot/lib/tinymce-dist"
    },
    {
      "library": "jqueryui@1.12.1",
      "destination": "wwwroot/lib/jquery-ui"
    },
    {
      "library": "elfinder@2.1.49",
      "destination": "wwwroot/lib/elfinder",
      "files": [
        "css/elfinder.full.css",
        "css/elfinder.full.min.css",
        "css/elfinder.full.min.css.map",
        "css/elfinder.min.css",
        "css/theme.css",
        "css/theme.min.css",
        "css/theme.min.css.map",
        "img/arrows-active.png",
        "img/arrows-normal.png",
        "img/crop.gif",
        "img/dialogs.png",
        "img/edit_aceeditor.png",
        "img/edit_ckeditor.png",
        "img/edit_ckeditor5.png",
        "img/edit_codemirror.png",
        "img/edit_creativecloud.png",
        "img/edit_onlineconvert.png",
        "img/edit_pixlreditor.png",
        "img/edit_pixlrexpress.png",
        "img/edit_simplemde.png",
        "img/edit_tinymce.png",
        "img/edit_tuiimgedit.png",
        "img/edit_zohooffice.png",
        "img/editor-icons.png",
        "img/icons-big.png",
        "img/icons-big.svg",
        "img/icons-small.png",
        "img/logo.png",
        "img/progress.gif",
        "img/quicklook-bg.png",
        "img/quicklook-icons.png",
        "img/resize.png",
        "img/spinner-mini.gif",
        "img/toolbar.png",
        "img/trashmesh.png",
        "img/tui-icon-a.svg",
        "img/tui-icon-b.svg",
        "img/tui-icon-c.svg",
        "img/tui-icon-d.svg",
        "img/ui-icons_ffffff_256x240.png",
        "img/volume_icon_box.png",
        "img/volume_icon_box.svg",
        "img/volume_icon_dropbox.png",
        "img/volume_icon_dropbox.svg",
        "img/volume_icon_ftp.png",
        "img/volume_icon_ftp.svg",
        "img/volume_icon_googledrive.png",
        "img/volume_icon_googledrive.svg",
        "img/volume_icon_local.png",
        "img/volume_icon_local.svg",
        "img/volume_icon_network.png",
        "img/volume_icon_network.svg",
        "img/volume_icon_onedrive.png",
        "img/volume_icon_onedrive.svg",
        "img/volume_icon_sql.png",
        "img/volume_icon_sql.svg",
        "img/volume_icon_trash.png",
        "img/volume_icon_trash.svg",
        "img/volume_icon_zip.png",
        "img/volume_icon_zip.svg",
        "js/elfinder.full.js",
        "js/elfinder.full.min.js",
        "js/elfinder.full.min.js.map",
        "js/elfinder.min.js",
        "js/extras/editors.default.js",
        "js/extras/editors.default.min.js",
        "js/extras/quicklook.googledocs.js",
        "js/extras/quicklook.googledocs.min.js",
        "js/i18n/elfinder.ar.js",
        "js/i18n/elfinder.ar.min.js",
        "js/i18n/elfinder.ar.min.js.map",
        "js/i18n/elfinder.bg.js",
        "js/i18n/elfinder.bg.min.js",
        "js/i18n/elfinder.bg.min.js.map",
        "js/i18n/elfinder.ca.js",
        "js/i18n/elfinder.ca.min.js",
        "js/i18n/elfinder.ca.min.js.map",
        "js/i18n/elfinder.cs.js",
        "js/i18n/elfinder.cs.min.js",
        "js/i18n/elfinder.cs.min.js.map",
        "js/i18n/elfinder.da.js",
        "js/i18n/elfinder.da.min.js",
        "js/i18n/elfinder.da.min.js.map",
        "js/i18n/elfinder.de.js",
        "js/i18n/elfinder.de.min.js",
        "js/i18n/elfinder.de.min.js.map",
        "js/i18n/elfinder.el.js",
        "js/i18n/elfinder.el.min.js",
        "js/i18n/elfinder.el.min.js.map",
        "js/i18n/elfinder.es.js",
        "js/i18n/elfinder.es.min.js",
        "js/i18n/elfinder.es.min.js.map",
        "js/i18n/elfinder.fa.js",
        "js/i18n/elfinder.fa.min.js",
        "js/i18n/elfinder.fa.min.js.map",
        "js/i18n/elfinder.fallback.js",
        "js/i18n/elfinder.fallback.min.js",
        "js/i18n/elfinder.fallback.min.js.map",
        "js/i18n/elfinder.fo.js",
        "js/i18n/elfinder.fo.min.js",
        "js/i18n/elfinder.fo.min.js.map",
        "js/i18n/elfinder.fr.js",
        "js/i18n/elfinder.fr.min.js",
        "js/i18n/elfinder.fr.min.js.map",
        "js/i18n/elfinder.he.js",
        "js/i18n/elfinder.he.min.js",
        "js/i18n/elfinder.he.min.js.map",
        "js/i18n/elfinder.hr.js",
        "js/i18n/elfinder.hr.min.js",
        "js/i18n/elfinder.hr.min.js.map",
        "js/i18n/elfinder.hu.js",
        "js/i18n/elfinder.hu.min.js",
        "js/i18n/elfinder.hu.min.js.map",
        "js/i18n/elfinder.id.js",
        "js/i18n/elfinder.id.min.js",
        "js/i18n/elfinder.id.min.js.map",
        "js/i18n/elfinder.it.js",
        "js/i18n/elfinder.it.min.js",
        "js/i18n/elfinder.it.min.js.map",
        "js/i18n/elfinder.ja.js",
        "js/i18n/elfinder.ja.min.js",
        "js/i18n/elfinder.ja.min.js.map",
        "js/i18n/elfinder.ko.js",
        "js/i18n/elfinder.ko.min.js",
        "js/i18n/elfinder.ko.min.js.map",
        "js/i18n/elfinder.LANG.js",
        "js/i18n/elfinder.LANG.min.js",
        "js/i18n/elfinder.LANG.min.js.map",
        "js/i18n/elfinder.nl.js",
        "js/i18n/elfinder.nl.min.js",
        "js/i18n/elfinder.nl.min.js.map",
        "js/i18n/elfinder.no.js",
        "js/i18n/elfinder.no.min.js",
        "js/i18n/elfinder.no.min.js.map",
        "js/i18n/elfinder.pl.js",
        "js/i18n/elfinder.pl.min.js",
        "js/i18n/elfinder.pl.min.js.map",
        "js/i18n/elfinder.pt_BR.js",
        "js/i18n/elfinder.pt_BR.min.js",
        "js/i18n/elfinder.pt_BR.min.js.map",
        "js/i18n/elfinder.ro.js",
        "js/i18n/elfinder.ro.min.js",
        "js/i18n/elfinder.ro.min.js.map",
        "js/i18n/elfinder.ru.js",
        "js/i18n/elfinder.ru.min.js",
        "js/i18n/elfinder.ru.min.js.map",
        "js/i18n/elfinder.si.js",
        "js/i18n/elfinder.si.min.js",
        "js/i18n/elfinder.si.min.js.map",
        "js/i18n/elfinder.sk.js",
        "js/i18n/elfinder.sk.min.js",
        "js/i18n/elfinder.sk.min.js.map",
        "js/i18n/elfinder.sl.js",
        "js/i18n/elfinder.sl.min.js",
        "js/i18n/elfinder.sl.min.js.map",
        "js/i18n/elfinder.sr.js",
        "js/i18n/elfinder.sr.min.js",
        "js/i18n/elfinder.sr.min.js.map",
        "js/i18n/elfinder.sv.js",
        "js/i18n/elfinder.sv.min.js",
        "js/i18n/elfinder.sv.min.js.map",
        "js/i18n/elfinder.tr.js",
        "js/i18n/elfinder.tr.min.js",
        "js/i18n/elfinder.tr.min.js.map",
        "js/i18n/elfinder.ug_CN.js",
        "js/i18n/elfinder.ug_CN.min.js",
        "js/i18n/elfinder.ug_CN.min.js.map",
        "js/i18n/elfinder.uk.js",
        "js/i18n/elfinder.uk.min.js",
        "js/i18n/elfinder.uk.min.js.map",
        "js/i18n/elfinder.vi.js",
        "js/i18n/elfinder.vi.min.js",
        "js/i18n/elfinder.vi.min.js.map",
        "js/i18n/elfinder.zh_CN.js",
        "js/i18n/elfinder.zh_CN.min.js",
        "js/i18n/elfinder.zh_CN.min.js.map",
        "js/i18n/elfinder.zh_TW.js",
        "js/i18n/elfinder.zh_TW.min.js",
        "js/i18n/elfinder.zh_TW.min.js.map",
        "js/i18n/help/cs.html.js",
        "js/i18n/help/en.html.js",
        "js/i18n/help/es.html.js",
        "js/i18n/help/ja.html.js",
        "js/i18n/help/ko.html.js",
        "js/i18n/help/pl.html.js",
        "js/i18n/help/ru.html.js",
        "js/i18n/help/sk.html.js",
        "js/proxy/elFinderSupportVer1.js",
        "js/proxy/elFinderSupportVer1.min.js",
        "js/proxy/elFinderSupportVer1.min.js.map"
      ]
    }
  ]
}
/**
 * Bootstrap like theme for elFinder LibreICONS SVG Edition
 * Required jquery ui "smoothness" theme
 * Style rules copied and edited from Boostrap Source
 * @author StudioJunkyard
 * @ProjectURL https://github.com/StudioJunkyard/elfinder-libre-theme
 * @Required https://github.com/StudioJunkyard/LibreICONS
**/
.elfinder{
	display:block;
	padding:0;
	height:100%;
	border:0;
	-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);
	box-shadow:0 3px 9px rgba(0,0,0,.5)
}
.elfinder *{
	border-collapse:collapse;
	font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;
	color:#000;
	text-align:left;
	cursor:auto
}
.ui-corner-all{
	border:0;
	margin:0;
	padding:0;
	box-shadow:0
}
.elfinder .ui-icon-gripsmall-diagonal-se,
.elfinder-dialog .ui-icon-gripsmall-diagonal-se,
.elfinder-quicklook .ui-resizable-se{
	background-image:none;
	bottom:3px;
	right:3px;
	width:0;
	height:0;
	overflow:hidden;
	border-width:10px 10px 0 0;
	border-color:transparent #666 transparent transparent;
	border-style:dashed solid dashed dashed;
	font-size:0;
	vertical-align:bottom;
	margin-top:6px;
	margin-bottom:2px;
	-webkit-box-shadow:0 1px 0 rgba(255,255,255,.3);
	box-shadow:0 1px 0 rgba(255,255,255,.3);
	cursor:se-resize
}
.elfinder-drag-helper *{
	font-size:42px
}
.elfinder-drag-num{
	font-size:12px
}
.elfinder-cwd-icon{
	display:inline-block;
	width:14px;
	height:14px;
	vertical-align:middle;
	overflow:hidden
}
.elfinder .elfinder-toolbar{
	white-space:normal;
	padding:10px 15px;
	border-bottom:1px solid transparent;
	border-top-left-radius:3px;
	border-top-right-radius:3px;
	color:#333;
	background-color:#f5f5f5;
	border-color:#ddd
}
.elfinder .elfinder-buttonset{
	float:left;
	margin:0 6px 5px 0;
	display:inline-block;
	font-size:14px;
	font-weight:400;
	line-height:1.42857143;
	text-align:center;
	white-space:nowrap;
	vertical-align:middle;
	-ms-touch-action:manipulation;
	touch-action:manipulation;
	cursor:pointer;
	-webkit-user-select:none;
	-moz-user-select:none;
	-ms-user-select:none;
	user-select:none;
	background:#fff none;
	border:1px solid #ccc;
	border-radius:4px
}
.elfinder .elfinder-buttonset .elfinder-button{
	display:inline-block;
	height:16px;
	padding:4px 6px;
	outline:none;
	cursor:default;
	float:left;
	border:none;
	border-radius:0
}
.elfinder .elfinder-buttonset .elfinder-button:hover,
.elfinder .elfinder-buttonset .elfinder-button:focus,
.elfinder .elfinder-buttonset .elfinder-button:active{
	background:#ccc
}
.elfinder .elfinder-buttonset .elfinder-button.ui-state-disabled{
	opacity:.3
}
.elfinder .elfinder-buttonset .elfinder-toolbar-button-separator{
	display:none
}
.elfinder-toolbar .elfinder-button-search{
	margin:0 0 5px 5px;
	height:auto;
	min-height:26px;
	width:200px;
	box-sizing:border-box
}
.elfinder-toolbar .elfinder-button-search .elfinder-button-menu{
	background:#fff;
	padding:4px 0 0 4px;
	height:auto
}
.elfinder-toolbar .elfinder-button-search .elfinder-button-menu .ui-button-text{
	cursor:pointer
}
.elfinder-toolbar .elfinder-button-search .elfinder-button-menu .ui-state-default{
	background:#eaeaea
}
.elfinder-toolbar .elfinder-button-search .elfinder-button-menu .ui-state-hover{
	background:#d0ebf4 none;
	border:1px solid #509ece!important
}
.elfinder-toolbar .elfinder-button-search .elfinder-button-menu .ui-button-text:hover{
	color:#509ece
}
.elfinder-toolbar .elfinder-button-search:nth-child(2){
	display:none!important
}
.elfinder-toolbar .elfinder-button-search input{
	height:26px;
	width:200px;
	padding-left:24px;
	box-sizing:border-box
}
.elfinder-toolbar .elfinder-button-search .ui-icon{
	display:inline-block;
	width:14px;
	height:14px;
	vertical-align:middle
}
.elfinder-toolbar .elfinder-button-search .ui-icon-search{
	margin-left:5px;
	margin-right:5px;
	overflow:hidden;
	display:block
}
.elfinder-toolbar .elfinder-button-menu{
	background:#fff;
	width:auto;
	height:auto;
}
.elfinder-toolbar .elfinder-button-menu .buttonset{
	display:block;
	margin-top:5px
}
.elfinder-toolbar .elfinder-button-menu .buttonset input{
	width:12px;
	height:12px;
	display:inline-block;
	margin:2px 2px 0 10px
}
.elfinder-toolbar .elfinder-button-menu .buttonset label{
	display:inline;
	padding:0 0 4px 5px
}
.elfinder-toolbar .elfinder-button-menu .buttonset label:after{
	content:'\a';
	white-space:pre
}
.elfinder-button-icon,
.elfinder-menu-item-sort-dir{
	vertical-align:middle
}
.elfinder-button-menu{
	background-color:#fff;
	border:1px solid #999;
	border-radius:3px;
	box-shadow:0 0 3px rgba(0,0,0,.15)
}
.elfinder-button-menu-item{
	cursor:pointer;
	white-space:nowrap;
	cursor:default;
	padding:5px 19px;
	position:relative
}

.elfinder-button-menu-item-selected,
.elfinder-button-menu-item.ui-state-hover{
	background:#337ab7 none;
	color:#fff
}
.elfinder .elfinder-navbar{
	background:#fff
}
.elfinder .elfinder-navbar-dir{
	padding:3px 3px 3px 38px;
	margin:0 0 3px 0;
	display:block;
	overflow:hidden;
	cursor:pointer;
	border:1px solid transparent
}
.elfinder .elfinder-navbar-dir.ui-state-active,
.elfinder .elfinder-navbar-dir:hover{
	border-radius:3px;
	background:#e4e4e4;
	color:#000;
	border:1px solid #e4e4e4
}

.elfinder .ui-resizable-handle.ui-resizable-e{
	cursor:e-resize
}
.elfinder .elfinder-cwd-view-icons .elfinder-cwd-file{
	padding:4px;
	cursor:pointer;
	border: 1px solid transparent
}
.elfinder .elfinder-cwd-view-icons .elfinder-cwd-file *,
.elfinder .elfinder-cwd-view-icons .elfinder-cwd-file .elfinder-cwd-filename,
.elfinder .elfinder-cwd-view-icons .elfinder-cwd-file .elfinder-cwd-file-wrapper{
	cursor:pointer;
	color:#000
}

.elfinder .elfinder-cwd-wrapper .elfinder-cwd-view-icons .elfinder-cwd-icon{
	overflow:hidden;
	height:52px;
	width:52px;
	font-size:48px;
	line-height:52px
}
.elfinder .elfinder-cwd-view-icons .elfinder-cwd-file .elfinder-cwd-filename{
	font-size:12px;
	color:#000;
	white-space:nowrap;
	overflow:hidden;
	text-overflow:ellipsis
}
.elfinder .elfinder-cwd-view-icons .elfinder-cwd-file:hover,
.elfinder .elfinder-cwd-view-icons .elfinder-cwd-file:active{
	-webkit-border-radius:6px;
	border-radius:6px;
	color:#333;
	background-color:#e6e6e6;
	border:1px solid #8c8c8c
}
.elfinder .elfinder-cwd-view-icons .elfinder-cwd-file.ui-selected{
	background-color:#f5f5f5;
	border:1px solid #8c8c8c
}
.elfinder .elfinder-cwd-view-icons .elfinder-cwd-file.ui-selected *{
	background-color:transparent
}
.elfinder .elfinder-cwd table thead tr{
	background:none;
	border:none
}
.elfinder .elfinder-cwd table thead tr td,
.elfinder .elfinder-cwd table thead tr td.ui-state-active{
	font-weight:700;
	font-size:13px;
	position:relative;
	color:#474747;
	text-shadow:0 1px 0 rgba(255,255,255,.75);
	border-bottom:2px solid #b2b2b2;
	padding:6px 18px 6px 10px;
	border-radius:2px 2px 0 0;
	background:#cfd1cf
}
.elfinder .elfinder-cwd-wrapper-list tr td .ui-icon,
.elfinder .elfinder-cwd-wrapper-list tr.ui-state-default td .ui-icon{
}
.elfinder .elfinder-cwd table{
	padding:0
}
.elfinder .elfinder-cwd table tr *{
	cursor:default
}
.elfinder .elfinder-cwd table tbody tr:nth-child(odd){
	background-color:#eaeaea
}
.elfinder .elfinder-cwd-view-list td{
	font-size:12px
}
.elfinder .elfinder-cwd-view-list td div{
	padding-top:3px;
	padding-bottom:3px
}
.elfinder .elfinder-cwd-wrapper-list .elfinder-cwd-file:hover,
.elfinder .elfinder-cwd-wrapper-list .elfinder-cwd-file.ui-state-hover{
	background:#d0ebf4 none
}
.elfinder .elfinder-cwd-wrapper-list .elfinder-cwd-file:hover *,
.elfinder .elfinder-cwd-wrapper-list .elfinder-cwd-file.ui-state-hover:hover *,
.elfinder .elfinder-cwd-wrapper-list .elfinder-cwd-file.ui-state-hover *{
	color:#509ece
}
.elfinder .elfinder-cwd table tbody tr.ui-selected td{
	background:#d2d2d7 none
}
.elfinder .elfinder-cwd-wrapper-list .elfinder-cwd-file.ui-selected:hover *{
	color:#fff
}
.elfinder .elfinder-cwd-wrapper-list .elfinder-cwd-icon{
	height:14px;
	width:14px;
	line-height:14px
}
.elfinder .elfinder-cwd-view-icons .elfinder-cwd-file .elfinder-cwd-filename{
	border-radius:3px
}
.elfinder .elfinder-cwd-wrapper-list .elfinder-cwd-icon:before{
	cursor:pointer
}
.elfinder-dialog{
	padding:0;
	background:#eaeaea;
	border:1px solid #b2b2b2;
	border-bottom-color:#999;
	border-radius:3px;
	-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);
	box-shadow:0 0 3px rgba(0,0,0,.15)
}
.elfinder-dialog .ui-dialog-content,
.elfinder-dialog .ui-dialog-content .ui-tabs{
	padding:0;
	margin:0;
	border:0
}
.elfinder-dialog .ui-dialog-titlebar{
	font-weight:700;
	cursor:move;
	position:relative;
	min-height:16.43px;
	padding:15px!important;
	border-bottom:1px solid #e5e5e5
}
.elfinder-dialog-icon{
	display:inline-block;
	width:14px;
	height:14px;
	vertical-align:middle;
	position:relative;
	margin:0 0 0 0;
	float:left
}
.elfinder-dialog .ui-tabs-nav{
	height:24px;
	background:#fff;
	border:0;
	border-bottom:1px solid #888;
	border-radius:0
}
.elfinder-dialog .ui-tabs-nav>li{
	float:left
}
.elfinder-dialog .ui-tabs-nav>li>a{
	margin-right:2px;
	border:1px solid #ddd;
	border-bottom-color:#888;
	border-radius:4px 4px 0 0
}
.elfinder-dialog .ui-tabs-nav>li>a:hover{
	background:#d4d4d4;
	border-color:#eee #eee #888
}
.elfinder-dialog .ui-tabs-nav .ui-state-default{
	height:24px;
	padding:5px;
	margin-right:3px;
	display:inline-block;
	cursor:pointer;
	line-height:16px;
	outline:none;
	color:#ccc;
	border:1px solid #bfbfbf;
	border-radius:3px 3px 0 0;
	background:#fff
}
.elfinder-dialog .ui-tabs-nav .ui-tabs-selected{
	color:#000;
	cursor:default;
	background-color:#fff;
	border:1px solid #888;
	border-bottom-color:transparent
}
.elfinder-dialog .ui-tabs-nav li:active{
	color:#000;
	cursor:default;
	background-color:#fff;
	border:1px solid #888;
	border-bottom-color:transparent
}
.elfinder-dialog .elfinder-cwd-icon{
	background-image:none!important;
	overflow:hidden;
	height:52px;
	width:52px;
	font-size:48px;
	line-height:52px;
	margin:6px
}
.elfinder-dialog .elfinder-upload-dropbox,
.elfinder-dialog .elfinder-upload-dialog-or,
.elfinder-dialog .ui-button.ui-button-text-only{
	margin:6px;
	text-align:center
}
.elfinder-dialog .elfinder-file-edit{
	box-sizing:border-box;
	width:100%;
	height:100%;
	border:0;
	padding:5px
}
.elfinder-dialog-error .ui-dialog-content,
.elfinder-dialog-confirm .ui-dialog-content{
	white-space:normal;
	padding:5px
}
.elfinder-dialog textarea{
	resize:none
}
.elfinder-dialog .ui-dialog-buttonpane{
	text-align:right;
	position:relative;
	padding:15px 15px;
	background-color:#f5f5f5;
	border-top:1px solid #ddd;
	border-bottom-right-radius:3px;
	border-bottom-left-radius:3px
}
.elfinder-dialog .ui-dialog-buttonset{
	margin-right:8px
}
.elfinder-dialog .ui-button{
	display:inline-block;
	*display:inline;
	*zoom:1;
	padding:4px 0;
	margin: 0 0 4px 4px!important;
	text-align:center;
	color:#333;
	vertical-align:middle;
	cursor:pointer;
	border:1px solid #b6b6b6;
	border-bottom-color:#999;
	border-radius:3px;
	background:#e4e4e4
}
.elfinder-dialog .ui-button:hover{
	border-color:#9e9e9e;
	background:#ccc
}
.elfinder-dialog .ui-button:active{
	border-color:#969696;
	outline:none
}
.elfinder-contextmenu *{
	font:normal normal normal 16px Arial,Helvetica,Tahoma,Verdana,Sans-Serif
}
.elfinder-contextmenu{
	display:block;
	border:1px solid #b6b6b6;
	padding:0;
	-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);
	box-shadow:0 0 3px rgba(0,0,0,.15)
}
.elfinder-contextmenu .elfinder-contextmenu-item{
	margin:2px 0;
	padding:0px 30px 5px 30px;
	box-sizing:border-box;
	height:16px
}
.elfinder-contextmenu .elfinder-contextmenu-item:hover{
	background-color:#eff0ef
}
.elfinder-contextmenu .elfinder-contextmenu-icon{
	top:0;
	left:0;
	margin:0;
	padding:2px 0 0 0;
	background-color:#eff0ef;
	height:100%;
	line-height:24px;
	width:14px;
	height:14px;
	text-align:center
}
.elfinder-contextmenu .elfinder-contextmenu-separator{
	border:none;
	background-color:#333;
	height:1px;
	filter:alpha(opacity=70);
	opacity:.70
}
.elfinder .elfinder-statusbar{
	position:relative;
	padding:10px 15px;
	background-color:#f5f5f5;
	border:1px solid #ddd;
	border-bottom-right-radius:3px;
	border-bottom-left-radius:3px
}
.elfinder .elfinder-path{
	max-width:none;
	font-size:0;
	margin:0 6px 5px 0;
	padding:8px 30px 8px 0;
	background-color:transparent
}
.elfinder .elfinder-path>a{
	font-size:12px;
	cursor:pointer;
}
.elfinder .elfinder-path>a+a:before{
	padding:0 2px 0 4px;
	color:#ccc;
	content:'/\00a0'
}
.elfinder .elfinder-path a:hover,
.elfinder .elfinder-path a:hover:focus,
.elfinder .elfinder-path a:hover:active{
	color:#777
}
.elfinder .elfinder-statusbar .elfinder-stat-selected{
	float:right;
	font-size:12px;
	margin:0 0 5px 6px;
	padding:5px;
	text-align:right
}
.elfinder .elfinder-statusbar .elfinder-stat-size{
	font-size:12px;
	padding:5px;
	margin:0 0 5px 6px
}
.elfinder .ui-widget-header{
    background-image:none;
	min-height:14px;
	padding:15px!important;
	border-bottom:1px solid #e5e5e5;
	background-color:#f5f5f5
}
[class*="elfinder-cwd-icon-"],
[class*="elfinder-button-menu-"],
[class*="elfinder-button-"]{
	display:inline-block;
	background-repeat:no-repeat;
	width:14px;
	height:14px;
	vertical-align:middle
}
.elfinder-button-menu-item-selected.elfinder-menu-item-sort-asc .elfinder-menu-item-sort-dir{background:url(../img/libre-sort.svg)}
.elfinder-button-menu-item-selected.elfinder-menu-item-sort-desc .elfinder-menu-item-sort-dir{background:url(../img/libre-sort-desc.svg)}
.elfinder-cwd-icon-directory,
.elfinder-droppable-active .elfinder-cwd-icon-directory{background:url(../img/libre-folder-open.svg)}
.elfinder-cwd-icon-text,
.elfinder-cwd-icon-rtf,
.elfinder-cwd-icon-rtfd{background:url(../img/libre-file-text.svg)}
.elfinder-cwd-icon-pdf{background:url(../img/libre-file-pdf.svg)}
.elfinder-cwd-icon-vnd-ms-word,
.elfinder-cwd-icon-vnd-ms-powerpoint,
.elfinder-cwd-icon-ms-excel,
.elfinder-cwd-icon-vnd-ms-excel,
.elfinder-cwd-icon-vnd-ms-excel-addin-macroEnabled-12,
.elfinder-cwd-icon-vnd-ms-excel-sheet-binary-macroEnabled-12,
.elfinder-cwd-icon-vnd-ms-excel-sheet-macroEnabled-12,
.elfinder-cwd-icon-vnd-ms-excel-template-macroEnabled-12{background:url(../img/libre-file-docs.svg)}
.elfinder-cwd-icon-audio{background:url(../img/libre-file-audo.svg)}
.elfinder-cwd-icon-video,
.elfinder-cwd-icon-flash-video{background:url(../img/libre-file-video.svg)}
.elfinder-cwd-icon-application,
.elfinder-cwd-icon-zip,
.elfinder-cwd-icon-x-zip,
.elfinder-cwd-icon-x-xz,
.elfinder-cwd-icon-x-7z-compressed,
.elfinder-cwd-icon-x-gzip,
.elfinder-cwd-icon-x-tar,
.elfinder-cwd-icon-x-bzip,
.elfinder-cwd-icon-x-bzip2,
.elfinder-cwd-icon-x-rar{background:url(../img/libre-file-archive.svg)}
.elfinder-cwd-icon-x-empty,
.elfinder-cwd-icon-inode,
.elfinder-cwd-icon-html,
.elfinder-cwd-icon-javascript,
.elfinder-cwd-icon-x-javascript,
.elfinder-cwd-icon-x-perl,
.elfinder-cwd-icon-x-python,
.elfinder-cwd-icon-x-ruby,
.elfinder-cwd-icon-x-sh,
.elfinder-cwd-icon-x-shellscript,
.elfinder-cwd-icon-x-c,
.elfinder-cwd-icon-x-csrc,
.elfinder-cwd-icon-x-chdr,
.elfinder-cwd-icon-x-c--,
.elfinder-cwd-icon-x-c--src,
.elfinder-cwd-icon-x-c--hdr,
.elfinder-cwd-icon-x-java,
.elfinder-cwd-icon-x-java-source,
.elfinder-cwd-icon-x-php,
.elfinder-cwd-icon-xml{background:url(../img/libre-file-code.svg)}
.elfinder-toolbar .elfinder-button-search .ui-icon-search{background:url(../img/libre-search.svg)}
.elfinder-toolbar .elfinder-button-search .ui-icon-close{background:url(../img/libre-close.svg)}
.elfinder-button-icon-back{background:url(../img/libre-chevron-left.svg)}
.elfinder-button-icon-forward{background:url(../img/libre-chevron-right.svg)}
.elfinder-button-icon-netmount{background:url(../img/libre-server.svg)}
.elfinder-button-icon-reload{background:url(../img/libre-refresh.svg)}
.elfinder-button-icon-home{background:url(../img/libre-home.svg)}
.elfinder-button-icon-up{background:url(../img/libre-level-up.svg)}
.elfinder-button-icon-mkdir{background:url(../img/libre-folder-open.svg)}
.elfinder-button-icon-mkfile{background:url(../img/libre-file.svg)}
.elfinder-button-icon-upload{background:url(../img/libre-upload.svg)}
.elfinder-button-icon-open{background:url(../img/libre-folder-open.svg)}
.elfinder-button-icon-download{background:url(../img/libre-download.svg)}
.elfinder-button-icon-getfile{background:url(../img/libre-download.svg)}
.elfinder-button-icon-info{background:url(../img/libre-exclamation-circle.svg)}
.elfinder-button-icon-quicklook{background:url(../img/libre-view.svg)}
.elfinder-button-icon-copy{background:url(../img/libre-copy.svg)}
.elfinder-button-icon-cut{background:url(../img/libre-cut.svg)}
.elfinder-button-icon-paste{background:url(../img/libre-paste.svg)}
.elfinder-button-icon-view{background:url(../img/libre-layout-blocks.svg)}
.elfinder-button-icon-view-list{background:url(../img/libre-layout-list.svg)}
.elfinder-button-icon-help{background:url(../img/libre-help.svg)}
.elfinder-button-icon-duplicate{background:url(../img/libre-copy.svg)}
.elfinder-button-icon-rm{background:url(../img/libre-trash.svg)}
.elfinder-button-icon-edit{background:url(../img/libre-edit.svg)}
.elfinder-button-icon-rename{background:url(../img/libre-text-cursor.svg)}
.elfinder-button-icon-archive{background:url(../img/libre-archive.svg)}
.elfinder-button-icon-resize{background:url(../img/libre-crop.svg)}
.elfinder-button-icon-extract{background:url(../img/libre-archive.svg)}
.elfinder-button-icon-sort{background:url(../img/libre-sort.svg)}
.elfinder-button-icon-fullscreen{background:url(../img/libre-resize-full.svg)}
.elfinder-button-icon-unfullscreen{background:url(../img/libre-resize-small.svg)}
.elfinder .elfinder-navbar-expanded .elfinder-navbar-arrow{background:none none}
.elfinder .elfinder-navbar-root>.elfinder-navbar-icon,
.elfinder .elfinder-navbar-root.elfinder-navbar-expanded>.elfinder-navbar-icon{background:url(../img/libre-home.svg)}
.elfinder .elfinder-navbar-icon{background:url(../img/libre-folder.svg)}
.elfinder .elfinder-navbar-expanded>.elfinder-navbar-icon{width:14px;height:14px;background:url(../img/libre-folder-open.svg);background-position:0 -5px}
.elfinder .elfinder-cwd-wrapper-list tr.ui-state-default td .ui-icon-triangle-1-s{background:url(../img/libre-caret-down.svg)}
.elfinder .elfinder-cwd-wrapper-list tr.ui-state-default td .ui-icon-triangle-1-n{background:url(../img/libre-sort-asc.svg)}
.elfinder-dialog-icon-error{width:32px;height:32px;background:url(../img/libre-exclamation-circle.svg)}
.elfinder-dialog-icon-confirm{width:32px;height:32px;background:url(../img/libre-question-circle.svg)}
.ui-dialog-titlebar-close,
.dialogelfinder-drag-close{
	display:inline-block;
	background-repeat:no-repeat;
	background-image:url(../img/libre-close.svg);
	width:14px;
	height:14px;
	vertical-align:middle;
	text-decoration:none
}
.ui-dialog-titlebar-close:hover,
.dialogelfinder-drag-close:hover{
	text-decoration:none
}
.ui-dialog .ui-dialog-titlebar-close{
	position:absolute;
	right:.3em;
	top:.3em;
	width:14px;
	height:14px;
	margin:0;
	border-width:0;
	border:none;
	-webkit-box-shadow:none;
	-moz-box-shadow:none;
	box-shadow:none
}
.ui-dialog .ui-dialog-titlebar-close.elfinder-titlebar-full{
	right:44px
}
.elfinder-quicklook-title{font-size:.7em}
.elfinder-quicklook-info-data{font-size:.72em}
.elfinder-quicklook-preview-text-wrapper{font-size:.9em}
.elfinder-quicklook{
	display:none;
	overflow:hidden;
	background-color:#fff;
	border:1px solid #ddd;
	-moz-border-radius:4px;
	-webkit-border-radius:4px;
	border-radius:4px;
	-webkit-box-shadow:0 3px 30px rgba(0,0,0,.05);
	box-shadow:0 3px 30px rgba(0,0,0,.05)
}

.elfinder-quicklook-fullscreen{
	border-radius:0;
	-moz-border-radius:0;
	-webkit-border-radius:0;
	-webkit-background-clip:padding-box;
	padding:0;
	background:#000;
	background:rgba(0,0,0,.75);
	z-index:90000;
	display:block
}
.elfinder-quicklook-fullscreen .elfinder-quicklook-titlebar{
	display:none
}
.elfinder-quicklook-fullscreen .elfinder-quicklook-preview{
	border:0 solid
}
.elfinder-quicklook-fullscreen iframe{
	height:99%
}
.elfinder-quicklook-titlebar{
	position:absolute;
	top:0;
	left:0;
	right:0;
	height:32px;
	margin-bottom:20px;
	padding:10px 15px;
	color:#333;
	background-color:#f5f5f5;
	border-color:#ddd;
	border-bottom:1px solid transparent;
	-moz-border-radius-topleft:3px;
	-webkit-border-top-left-radius:3px;
	border-top-left-radius:3px;
	-moz-border-radius-topright:3px;
	-webkit-border-top-right-radius:3px;
	border-top-right-radius:3px;
	cursor:move;
	box-sizing:border-box
}
.elfinder-quicklook-title{
	position:relative;
	color:#333;
	white-space:nowrap;
	overflow:hidden
}
.elfinder-quicklook-titlebar .ui-icon{
	position:absolute;
	background:url(../img/libre-close.svg);
	margin:0;
	padding:0;
	right:2px;
	top:7px;
	left:auto;
	width:14px;
	height:14px;
	cursor:default
}
.elfinder-quicklook-preview{
	overflow:hidden;
	position:relative;
	margin-top:15px;
	border:0 solid;
	border-left:1px solid transparent;
	border-right:1px solid transparent;
	height:100%
}
.elfinder-quicklook-info-wrapper{
	position:absolute;
	width:100%;
	left:0;
	top:0
}
.elfinder-quicklook-info{
	padding:0 12px 0 112px
}
.elfinder-quicklook-info .elfinder-quicklook-info-data:first-child{
	color:#000;
	font-weight:700;
	padding-bottom:.5em
}
.elfinder-quicklook-info-data{
	padding-bottom:.2em;
	color:#000
}
.elfinder-quicklook .elfinder-cwd-icon{
	position:absolute;
	left:32px;
	top:50%;
	margin-top:0
}
.elfinder-quicklook-preview img{
	display:block;
	margin:0 auto
}
.elfinder-quicklook-navbar{
	position:absolute;
	bottom:4px;
	width:116px;
	height:28px;
	padding:0;
	margin:0 auto 0 -70px;
	background:#fff;
	border:1px solid #eee;
	-moz-border-radius:19px;
	-webkit-border-radius:19px;
	border-radius:19px;
}
.elfinder-quicklook-fullscreen .elfinder-quicklook-navbar{
	width:156px;
	margin-left:-94px;
	padding:0;
	border:1px solid #eee;
	background:#fff;
}
.elfinder-quicklook-navbar-icon{
	width:24px;
	height:24px;
	margin:0 7px;
	float:left
}
.elfinder-quicklook-navbar-icon-fullscreen{background:url(../img/libre-resize-full.svg)}
.elfinder-quicklook-navbar-icon-fullscreen-off{background:url(../img/libre-resize-small.svg)}
.elfinder-quicklook-navbar-icon-prev{background:url(../img/libre-arrow-left.svg)}
.elfinder-quicklook-navbar-icon-next{background:url(../img/libre-arrow-right.svg)}
.elfinder-quicklook-navbar-icon-close{background:url(../img/libre-close.svg);display:none}
.dialogelfinder{z-index:20000} /* Fix Dialog z-index for Summernote in Full Screen Mode */
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 14 14" id="libre-archive"><path d="M 8.38462,6.5 Q 8.38462,6.296875 8.2476,6.148437 8.11058,6 7.92308,6 H 6.07692 Q 5.88942,6 5.7524,6.148437 5.61538,6.296875 5.61538,6.5 q 0,0.203125 0.13702,0.351563 Q 5.88942,7 6.07692,7 H 7.92308 Q 8.11058,7 8.2476,6.851563 8.38462,6.703125 8.38462,6.5 z M 12.53846,5 v 7.5 q 0,0.203125 -0.13702,0.351563 Q 12.26442,13 12.07692,13 H 1.923077 Q 1.735577,13 1.598558,12.851563 1.461538,12.703125 1.461538,12.5 V 5 q 0,-0.203125 0.13702,-0.351563 Q 1.735577,4.5 1.923077,4.5 H 12.07692 q 0.1875,0 0.32452,0.148437 Q 12.53846,4.796875 12.53846,5 z M 13,1.5 v 2 Q 13,3.703125 12.86298,3.851563 12.72596,4 12.53846,4 H 1.461538 Q 1.274038,4 1.137019,3.851563 1,3.703125 1,3.5 v -2 Q 1,1.296875 1.137019,1.148437 1.274038,1 1.461538,1 H 12.53846 q 0.1875,0 0.32452,0.148437 Q 13,1.296875 13,1.5 z"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 14 14" id="libre-arrow-left"><path d="m 12.668805,6.50706 v 0.98588 q 0,0.40822 -0.25032,0.69705 -0.25032,0.28883 -0.65083,0.28883 h -5.42234 l 2.25674,2.26444 q 0.29268,0.27728 0.29268,0.6932 0,0.41591 -0.29268,0.69319 l -0.57766,0.58537 Q 7.739415,13 7.331195,13 6.930685,13 6.630295,12.71502 L 1.616175,7.6932 Q 1.331195,7.40822 1.331195,7 q 0,-0.40051 0.28498,-0.7009 L 6.630295,1.29268 Q 6.922975,1 7.331195,1 q 0.40051,0 0.6932,0.29268 l 0.57766,0.56996 q 0.29268,0.29269 0.29268,0.7009 0,0.40822 -0.29268,0.7009 l -2.25674,2.25674 h 5.42234 q 0.40051,0 0.65083,0.28883 0.25032,0.28883 0.25032,0.69705 z"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" id="libre-arrow-right" viewBox="0 0 14 14"><path d="m 12.668805,7 q 0,0.41592 -0.28498,0.7009 l -5.01412,5.01412 Q 7.069325,13 6.668805,13 6.275995,13 5.975615,12.71502 l -0.57767,-0.57766 q -0.29268,-0.29269 -0.29268,-0.7009 0,-0.40822 0.29268,-0.7009 l 2.25674,-2.25674 h -5.42233 q -0.40052,0 -0.65084,-0.28883 Q 1.331195,7.90116 1.331195,7.49294 V 6.50706 q 0,-0.40822 0.25032,-0.69705 0.25032,-0.28883 0.65084,-0.28883 h 5.42233 L 5.397945,3.25674 q -0.29268,-0.27728 -0.29268,-0.6932 0,-0.41591 0.29268,-0.69319 L 5.975615,1.29268 Q 6.268295,1 6.668805,1 q 0.40822,0 0.7009,0.29268 l 5.01412,5.01412 Q 12.668805,6.57638 12.668805,7 z"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 14 14" id="libre-caret-down"><path d="m 13,4.375 q 0,0.30469 -0.22266,0.52734 l -5.25,5.25 Q 7.30469,10.375 7,10.375 q -0.30469,0 -0.52734,-0.22266 l -5.250004,-5.25 Q 1,4.67969 1,4.375 1,4.07031 1.222656,3.84766 1.445312,3.625 1.75,3.625 h 10.5 q 0.30469,0 0.52734,0.22266 Q 13,4.07031 13,4.375 z"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 14 14" id="libre-chevron-left"><path d="M 10.71464,3.04715 6.76179,7 l 3.95285,3.95285 q 0.14144,0.14144 0.14144,0.33499 0,0.19355 -0.14144,0.33499 L 9.47891,12.85856 Q 9.33747,13 9.14392,13 8.95037,13 8.80893,12.85856 L 3.28536,7.33499 Q 3.14392,7.19355 3.14392,7 q 0,-0.19355 0.14144,-0.33499 L 8.80893,1.14144 Q 8.95037,1 9.14392,1 9.33747,1 9.47891,1.14144 l 1.23573,1.23573 q 0.14144,0.14144 0.14144,0.33499 0,0.19355 -0.14144,0.33499 z"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 14 14" id="libre-chevron-right"><path d="M 10.71464,7.33499 5.19107,12.85856 Q 5.04963,13 4.85608,13 4.66253,13 4.52109,12.85856 L 3.28536,11.62283 q -0.14144,-0.14144 -0.14144,-0.33499 0,-0.19355 0.14144,-0.33499 L 7.23821,7 3.28536,3.04715 Q 3.14392,2.90571 3.14392,2.71216 q 0,-0.19355 0.14144,-0.33499 L 4.52109,1.14144 Q 4.66253,1 4.85608,1 5.04963,1 5.19107,1.14144 l 5.52357,5.52357 Q 10.85608,6.80645 10.85608,7 q 0,0.19355 -0.14144,0.33499 z"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 14 14" id="libre-close"><path d="m 12,10.047142 q 0,0.3367 -0.235692,0.572383 l -1.144783,1.144783 Q 10.383842,12 10.047142,12 9.7104417,12 9.47475,11.764308 L 7,9.289558 4.52525,11.764308 Q 4.2895583,12 3.9528583,12 3.6161583,12 3.380475,11.764308 L 2.2356917,10.619525 Q 2,10.383842 2,10.047142 2,9.710442 2.2356917,9.47475 L 4.7104417,7 2.2356917,4.52525 Q 2,4.2895583 2,3.9528583 2,3.6161583 2.2356917,3.380475 L 3.380475,2.2356917 Q 3.6161583,2 3.9528583,2 4.2895583,2 4.52525,2.2356917 L 7,4.7104417 9.47475,2.2356917 Q 9.7104417,2 10.047142,2 q 0.3367,0 0.572383,0.2356917 L 11.764308,3.380475 Q 12,3.6161583 12,3.9528583 12,4.2895583 11.764308,4.52525 L 9.2895583,7 11.764308,9.47475 Q 12,9.710442 12,10.047142 z"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 14 14" id="libre-copy"><path d="M 10.75,4 H 8.5 V 3.25 L 6.25,1 H 1 v 9 h 4.5 v 3 H 13 V 6.25 L 10.75,4 z m 0,1.060664 L 11.93934,6.25 H 10.75 V 5.060664 z m -4.5,-3 L 7.43934,3.25 H 6.25 V 2.060664 z M 1.75,1.75 H 5.5 V 4 h 2.25 v 5.25 h -6 v -7.5 z m 10.5,10.5 h -6 V 10 H 8.5 V 4.75 H 10 V 7 h 2.25 v 5.25 z"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 14 14" id="libre-crop"><path d="m 11.000019,10 0,-6.64649 1.5,-1.5 -0.353563,-0.35353 -1.5,1.5 L 4,2.99998 4,1 3.00001,1 l 0,2.00001 L 1,3.00001 1,4 l 2.00001,0 0,7.00002 6.99999,0 0,1.99998 1.000019,0 0,-1.99998 1.999981,0 L 13,10 11.000019,10 Z M 9.646495,4 4,9.6465 4,4 9.646495,4 Z M 4.353534,10 10,4.3535 10,10 4.353534,10 Z"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 14 14" id="libre-cut"><path d="M 10.163566,12.99997 C 9.5258789,12.99995 8.7295189,12.61072 8.3867929,11.74133 8.3391229,11.62789 8.2866909,11.49022 8.2260349,11.33096 8.0318549,10.82122 7.7383939,10.0509 7.4316909,9.73182 7.3194259,9.61501 7.2325899,9.53028 7.1627929,9.4622 7.1001429,9.4011 7.0474569,9.34967 6.9999959,9.29769 c -0.04746,0.052 -0.100149,0.1034 -0.162844,0.16458 -0.06975,0.0681 -0.156562,0.15279 -0.268781,0.26953 -0.306703,0.31912 -0.600188,1.08956 -0.794414,1.59935 -0.06061,0.15916 -0.113039,0.29674 -0.160688,0.41013 -0.342773,0.86942 -1.139109,1.25869 -1.77675,1.25869 -0.124289,0 -0.237609,-0.0151 -0.336867,-0.0449 -0.627469,-0.18858 -1.008094,-0.8892 -0.947133,-1.74342 l 0.0087,-0.0986 c 0.07704,-0.68916 0.496852,-1.37011 1.18207,-1.91733 0.594,-0.47433 1.296329,-0.76903 1.832907,-0.76903 0.106172,0 0.204187,0.0116 0.293414,0.0345 l 0.368226,-0.7549 C 5.8593679,6.75909 5.3202109,5.3444 4.8990159,4.10521 4.6642889,3.41467 4.4900779,2.8491 4.3811879,2.42425 4.2088749,1.7518 4.2198679,1.52441 4.2894079,1.38991 l 0.201604,-0.38994 2.509054,5.14371 2.508891,-5.14369 0.201609,0.38989 c 0.06954,0.1345 0.08058,0.36189 -0.09176,1.03434 -0.10889,0.42483 -0.283101,0.9904 -0.517804,1.68094 -0.421172,1.23909 -0.960328,2.6538 -1.338821,3.60108 l 0.368227,0.75489 c 0.0892,-0.0229 0.187195,-0.0345 0.293391,-0.0345 0.536601,0 1.238929,0.29471 1.8329531,0.76908 0.58582,0.46786 0.977648,1.03353 1.127109,1.61841 l 0.02763,-0.0132 0.03598,0.41067 c 0.06101,0.85418 -0.31957,1.5548 -0.946968,1.74342 -0.09926,0.0298 -0.212602,0.045 -0.336867,0.045 -4.7e-5,2e-5 -7.1e-5,2e-5 -7.1e-5,2e-5 z M 9.1290819,11.33469 c 0.443812,0.80515 0.840328,0.92557 1.0374141,0.92557 0.268289,0 0.469172,-0.21652 0.508383,-0.42584 0.02571,-0.1376 0.03037,-0.27923 0.01387,-0.42096 -0.06649,-0.56615 -0.453235,-1.05229 -0.7658911,-1.3604 -0.429703,-0.4234 -0.911461,-0.70458 -1.220742,-0.82735 -0.03077,-0.0107 -0.04971,-0.0123 -0.05834,-0.0123 -0.006,0 -0.0083,7.3e-4 -0.0083,7.3e-4 -0.09007,0.0585 -0.197766,0.73875 0.493617,2.12058 z M 5.2921049,9.22571 c -0.307383,0.12281 -0.786211,0.40397 -1.213218,0.82737 -0.310782,0.30809 -0.695063,0.79425 -0.761133,1.36059 -0.0165,0.14133 -0.01186,0.28287 0.0138,0.42078 0.03893,0.20929 0.238571,0.42583 0.505219,0.42583 0.195844,0 0.589922,-0.12044 1.031039,-0.92554 0.687,-1.38136 0.580406,-2.06119 0.489914,-2.12093 0,2e-5 -2.3e-5,2e-5 -9.3e-5,2e-5 -4.69e-4,0 -0.0029,-4.2e-4 -0.0075,-4.2e-4 -0.0086,-3e-5 -0.02738,0.002 -0.05803,0.0123 z"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 14 14" id="libre-download"><path d="m 8.9413345,5.52359 1.6529415,0 -3.5943485,3.60044 -3.594233,-3.60044 1.652941,0 0,-4.52359 3.882729,0 0,4.52359 z m -6.870553,4.3549 0,3.12151 9.8584365,0 0,-3.12151 -9.8584365,0 z m 1.603136,1.99765 -0.436893,0 0,-0.87379 0.436893,0 0,0.87379 z m 0.793689,0 -0.436893,0 0,-0.87379 0.436893,0 0,0.87379 z m 0.771845,0 -0.436893,0 0,-0.87379 0.436893,0 0,0.87379 z m 5.1068145,0.0728 c -0.281503,0 -0.5097075,-0.2282 -0.5097075,-0.50971 0,-0.2815 0.2282045,-0.50971 0.5097075,-0.50971 0.281505,0 0.50971,0.22821 0.50971,0.50971 0,0.28151 -0.228205,0.50971 -0.50971,0.50971 z"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 14 14" id="libre-edit"><path d="M 6.97309,9.367715 7.75336,8.587445 6.73094,7.565025 5.95067,8.345295 v 0.37668 h 0.64574 v 0.64574 h 0.37668 z m 2.95965,-4.84305 q -0.10763,-0.10763 -0.22198,0.007 L 7.3565,6.885925 q -0.11435,0.11435 -0.007,0.22198 0.10762,0.10762 0.22197,-0.007 l 2.35426,-2.35426 q 0.11435,-0.11435 0.007,-0.22197 z m 0.53811,3.99551 v 1.27803 q 0,0.80045 -0.56838,1.36883 -0.56839,0.56839 -1.36884,0.56839 H 2.93722 q -0.80045,0 -1.368834,-0.56839 Q 1,10.598655 1,9.798205 V 4.201795 Q 1,3.401345 1.568386,2.832955 2.13677,2.264575 2.93722,2.264575 h 5.59641 q 0.42377,0 0.787,0.16816 0.10089,0.0471 0.12107,0.15471 0.0202,0.11435 -0.0605,0.19507 l -0.3296,0.32959 q -0.0942,0.0942 -0.21525,0.0538 -0.15471,-0.0404 -0.30269,-0.0404 H 2.93725 q -0.44395,0 -0.76009,0.31615 -0.316143,0.31614 -0.316143,0.76009 v 5.59641 q 0,0.44395 0.316143,0.76009 0.31614,0.31614 0.76009,0.31614 h 5.59641 q 0.44395,0 0.76009,-0.31614 0.31615,-0.31614 0.31615,-0.76009 v -0.84753 q 0,-0.0874 0.0605,-0.14799 l 0.4305,-0.43049 q 0.10089,-0.1009 0.23542,-0.0471 0.13453,0.0538 0.13453,0.19506 z m -0.64574,-4.96412 1.93722,1.93722 -4.52018,4.52018 H 5.30493 v -1.93722 z m 2.98655,0.88789 -0.61884,0.61883 -1.93721,-1.93722 0.61883,-0.61883 q 0.18834,-0.18834 0.4574,-0.18834 0.26906,0 0.4574,0.18834 l 1.02242,1.02242 Q 13,3.717485 13,3.986545 q 0,0.26906 -0.18834,0.4574 z"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 14 14" id="libre-exclamation-circle"><path d="m 7.0052968,1.0051645 c -0.00159,0 -0.00371,2.648e-4 -0.0053,2.648e-4 -0.00185,0 -0.00344,-2.648e-4 -0.0053,-2.648e-4 -3.3105211,0 -5.99469681,2.6839108 -5.99469681,5.994968 0,3.3105275 2.68417571,5.9947035 5.99470311,5.9947035 0.00185,0 0.00344,0 0.0053,0 0.00159,0 0.00371,0 0.0053,0 C 10.315824,12.994836 13,10.31066 13,7.0001324 13.000265,3.6890753 10.316089,1.0051645 7.0052968,1.0051645 Z m 0,10.2734945 c -0.00159,0 -0.00371,-2.65e-4 -0.0053,-2.65e-4 -0.00185,0 -0.00344,2.65e-4 -0.0053,2.65e-4 -0.5418671,0 -0.9812403,-0.439109 -0.9812403,-0.981241 0,-0.5416024 0.4393732,-0.9807104 0.9812403,-0.9807104 0.00185,0 0.00344,0 0.0053,0 0.00159,0 0.00371,0 0.0053,0 0.5416023,0 0.9815052,0.439108 0.9815052,0.9807104 0,0.541867 -0.4391083,0.981241 -0.9815052,0.981241 z M 8.4124034,3.8013683 c -0.064092,0.9791216 -0.5116751,3.8910616 -0.5116751,3.8910616 0,0.4910175 -0.4022953,0.8888105 -0.8933127,0.8888105 -0.00265,0 -0.0053,0 -0.00768,0 -0.00238,0 -0.0053,0 -0.00768,0 -0.4907526,0 -0.8930479,-0.3983226 -0.8930479,-0.8888105 0,0 -0.4473184,-2.91194 -0.5114103,-3.8910616 -0.031781,-0.4902229 0.3437652,-1.4004856 1.4047231,-1.4004856 0.00265,0 0.0053,2.649e-4 0.00768,2.649e-4 0.00238,0 0.00503,-2.649e-4 0.00768,-2.649e-4 1.060693,0 1.4367689,0.9102627 1.404723,1.4004856 z"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 14 14" id="libre-file-archive"><path d="m 6.9097788,3.630751 0,-0.857143 -0.85714,0 0,0.857143 z m 0.85715,0.857142 0,-0.857142 -0.85715,0 0,0.857142 z m -0.85715,0.857143 0,-0.857143 -0.85714,0 0,0.857143 z m 0.85715,0.857143 0,-0.857143 -0.85715,0 0,0.857143 z m -0.85715,-3.428571 c -4.0952367,7.523809 -2.0476183,3.7619047 0,0 z m 0.9442,4.600446 0.71652,2.337054 c 0.035733,0.1205353 0.0536,0.2366067 0.0536,0.348214 0,0.370536 -0.16183,0.677456 -0.48549,0.920759 -0.32366,0.243303 -0.73326,0.364955 -1.2288,0.364955 -0.4955333,0 -0.90513,-0.121652 -1.22879,-0.364955 -0.32366,-0.243303 -0.48549,-0.550223 -0.48549,-0.920759 0,-0.1116073 0.017867,-0.2276787 0.0536,-0.348214 0.093753,-0.28125 0.36161,-1.1651787 0.80357,-2.651786 l 0,-0.857143 0.85714,0 0,0.857143 0.52902,0 c 0.098213,0 0.1852667,0.029017 0.26116,0.08705 0.075893,0.058033 0.1272333,0.133926 0.15402,0.227678 z m -0.9442,3.113839 c 0.2366133,0 0.4386233,-0.04241 0.60603,-0.127232 0.1674133,-0.08482 0.25112,-0.185268 0.25112,-0.301339 0,-0.1160713 -0.083707,-0.2165177 -0.25112,-0.301339 -0.1674067,-0.084821 -0.3694167,-0.127232 -0.60603,-0.127232 -0.2366067,0 -0.4386133,0.042411 -0.60602,0.127232 -0.1674133,0.084821 -0.25112,0.1852677 -0.25112,0.301339 0,0.116071 0.083707,0.216518 0.25112,0.301339 0.1674067,0.08482 0.3694133,0.127232 0.60602,0.127232 z M 7.640148,1.26517 C 7.49432,1.11934 7.20625,1 7,1 L 2.5,1 C 2.29375,1 2.125,1.16875 2.125,1.375 l 0,11.25 C 2.125,12.83125 2.29375,13 2.5,13 l 9,0 c 0.20625,0 0.375,-0.16875 0.375,-0.375 l 0,-6.75 c 0,-0.20625 -0.11932,-0.49432 -0.265148,-0.64015 L 7.640148,1.26517 Z M 11.125,12.25 l -8.25,0 0,-10.5 4.115133,0 c 0.03417,0.006 0.09853,0.0323 0.12668,0.0525 l 3.955734,3.95571 c 0.02018,0.0281 0.04683,0.0925 0.05245,0.12668 l 0,6.36513 z M 11.5,1 9.25,1 C 9.04375,1 8.99432,1.11932 9.140148,1.26515 l 2.46968,2.46968 C 11.75568,3.88068 11.875,3.83125 11.875,3.625 l 0,-2.25 C 11.875,1.16875 11.70625,1 11.5,1 Z" /></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 14 14" id="libre-file-audio"><path d="M 9.4282179,5.669492 5.8397513,6.4160412 5.8361013,9.1311478 C 5.1311088,8.991967 4.3995268,9.618134 4.6077293,10.208003 c 0.2752765,0.779988 1.8264555,0.545067 1.827624,-0.506953 4.87e-4,-0.433351 -3.57e-4,-1.4573847 -6e-4,-2.1676697 l 2.3940856,-0.5969466 0,1.8205466 C 8.1237813,8.6178328 7.3922968,9.244064 7.6004343,9.833868 7.8757108,10.613921 9.4268899,10.379 9.4280909,9.326916 c 3.895e-4,-0.3630315 1.3e-4,-3.657424 1.3e-4,-3.657424 z M 7.640148,1.26517 C 7.49432,1.11934 7.20625,1 7,1 L 2.5,1 C 2.29375,1 2.125,1.16875 2.125,1.375 l 0,11.25 C 2.125,12.83125 2.29375,13 2.5,13 l 9,0 c 0.20625,0 0.375,-0.16875 0.375,-0.375 l 0,-6.75 c 0,-0.20625 -0.11932,-0.49432 -0.265148,-0.64015 L 7.640148,1.26517 Z M 11.125,12.25 l -8.25,0 0,-10.5 4.115133,0 c 0.03417,0.006 0.09853,0.0323 0.12668,0.0525 l 3.955734,3.95571 c 0.02018,0.0281 0.04683,0.0925 0.05245,0.12668 l 0,6.36513 z M 11.5,1 9.25,1 C 9.04375,1 8.99432,1.11932 9.140148,1.26515 l 2.46968,2.46968 C 11.75568,3.88068 11.875,3.83125 11.875,3.625 l 0,-2.25 C 11.875,1.16875 11.70625,1 11.5,1 Z" /></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 14 14" id="libre-file-code"><path d="m 5.3416446,6.5903272 c 0.030727,-0.042227 0.071033,-0.06622 0.1209178,-0.071981 0.049931,-0.00575 0.095998,0.00672 0.1382017,0.037431 l 0.2936612,0.218812 c 0.042249,0.030709 0.06624,0.071017 0.071973,0.1209221 0.00574,0.049902 -0.00673,0.095968 -0.037405,0.1381965 l -1.0479919,1.3992409 1.0479915,1.399241 c 0.030727,0.04223 0.043195,0.08829 0.037405,0.138198 -0.00579,0.0499 -0.029781,0.09021 -0.071973,0.1209223 l -0.2936612,0.218811 c -0.042249,0.03071 -0.088317,0.04318 -0.1382017,0.03743 -0.049931,-0.0058 -0.090237,-0.02975 -0.1209178,-0.07198 L 4.0402863,8.5423534 c -0.053715,-0.072937 -0.053715,-0.1458741 0,-0.2188112 z M 9.9597122,8.323544 c 0.053717,0.072937 0.053717,0.1458741 0,0.2188111 L 8.6583627,10.275572 c -0.030726,0.04223 -0.071035,0.06622 -0.1209264,0.07198 -0.049874,0.0058 -0.095938,-0.0067 -0.138193,-0.03743 l -0.2936698,-0.21881 c -0.042249,-0.03071 -0.06624,-0.07102 -0.071973,-0.1209223 -0.00579,-0.0499 0.00668,-0.09597 0.037405,-0.138198 L 9.1189974,8.4329504 8.0710058,7.0337091 c -0.030726,-0.042227 -0.043195,-0.088292 -0.037405,-0.1381965 0.00574,-0.049902 0.029724,-0.09021 0.071973,-0.1209221 l 0.2936698,-0.218812 c 0.042249,-0.030709 0.088314,-0.043186 0.138193,-0.037431 0.049931,0.00575 0.09024,0.02975 0.1209264,0.071981 z m -3.570076,2.654529 c -0.049931,-0.0077 -0.08928,-0.03262 -0.1180457,-0.07485 -0.028778,-0.04223 -0.039325,-0.08829 -0.031644,-0.138196 L 7.0345799,5.9799614 c 0.00768,-0.049902 0.032648,-0.08925 0.074897,-0.1180423 0.042249,-0.028789 0.088313,-0.039346 0.1381929,-0.03167 l 0.3627706,0.057578 c 0.049931,0.00768 0.08928,0.032627 0.1180458,0.074853 0.028778,0.042227 0.039325,0.088292 0.031644,0.1381973 l -0.794634,4.7850616 c -0.00768,0.0499 -0.032647,0.08925 -0.074896,0.118042 -0.042249,0.02879 -0.088317,0.03935 -0.1382016,0.03167 z M 7.640148,1.26517 C 7.49432,1.11934 7.20625,1 7,1 L 2.5,1 C 2.29375,1 2.125,1.16875 2.125,1.375 l 0,11.25 C 2.125,12.83125 2.29375,13 2.5,13 l 9,0 c 0.20625,0 0.375,-0.16875 0.375,-0.375 l 0,-6.75 c 0,-0.20625 -0.11932,-0.49432 -0.265148,-0.64015 L 7.640148,1.26517 Z M 11.125,12.25 l -8.25,0 0,-10.5 4.115133,0 c 0.03417,0.006 0.09853,0.0323 0.12668,0.0525 l 3.955734,3.95571 c 0.02018,0.0281 0.04683,0.0925 0.05245,0.12668 l 0,6.36513 z M 11.5,1 9.25,1 C 9.04375,1 8.99432,1.11932 9.140148,1.26515 l 2.46968,2.46968 C 11.75568,3.88068 11.875,3.83125 11.875,3.625 l 0,-2.25 C 11.875,1.16875 11.70625,1 11.5,1 Z"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 14 14" id="libre-file-docs"><path d="m 10,10.696915 -6,0 0,-1.071288 6,0 z m -0.00114,-1.9788834 -2.3368368,0 0,-1.0712886 2.3368368,0 z m 0,-1.9759562 -2.3368368,0 0,-1.071288 2.3368368,0 z m -3.3029604,1.9759562 -2.6958966,0 0,-3.0472086 2.6958966,0 z M 7.640148,1.26517 C 7.49432,1.11934 7.20625,1 7,1 L 2.5,1 C 2.29375,1 2.125,1.16875 2.125,1.375 l 0,11.25 C 2.125,12.83125 2.29375,13 2.5,13 l 9,0 c 0.20625,0 0.375,-0.16875 0.375,-0.375 l 0,-6.75 c 0,-0.20625 -0.11932,-0.49432 -0.265148,-0.64015 L 7.640148,1.26517 Z M 11.125,12.25 l -8.25,0 0,-10.5 4.115133,0 c 0.03417,0.006 0.09853,0.0323 0.12668,0.0525 l 3.955734,3.95571 c 0.02018,0.0281 0.04683,0.0925 0.05245,0.12668 l 0,6.36513 z M 11.5,1 9.25,1 C 9.04375,1 8.99432,1.11932 9.140148,1.26515 l 2.46968,2.46968 C 11.75568,3.88068 11.875,3.83125 11.875,3.625 l 0,-2.25 C 11.875,1.16875 11.70625,1 11.5,1 Z"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 14 14" id="libre-file-image"><path d="m 4.0975496,6.5862148 c 0,-0.4169976 0.3381156,-0.7551474 0.7551822,-0.7551474 0.4169976,0 0.7551474,0.3381156 0.7551474,0.7551474 0,0.4170666 -0.3381156,0.7551822 -0.7551474,0.7551822 -0.4170324,0 -0.7551822,-0.3380814 -0.7551822,-0.7551822 z m 3.8302422,0.1020888 -1.25175,1.7785152 -0.6803286,-0.7011594 -1.919442,2.5874786 5.9999998,0 z M 7.640148,1.26517 C 7.49432,1.11934 7.20625,1 7,1 L 2.5,1 C 2.29375,1 2.125,1.16875 2.125,1.375 l 0,11.25 C 2.125,12.83125 2.29375,13 2.5,13 l 9,0 c 0.20625,0 0.375,-0.16875 0.375,-0.375 l 0,-6.75 c 0,-0.20625 -0.11932,-0.49432 -0.265148,-0.64015 L 7.640148,1.26517 Z M 11.125,12.25 l -8.25,0 0,-10.5 4.115133,0 c 0.03417,0.006 0.09853,0.0323 0.12668,0.0525 l 3.955734,3.95571 c 0.02018,0.0281 0.04683,0.0925 0.05245,0.12668 l 0,6.36513 z M 11.5,1 9.25,1 C 9.04375,1 8.99432,1.11932 9.140148,1.26515 l 2.46968,2.46968 C 11.75568,3.88068 11.875,3.83125 11.875,3.625 l 0,-2.25 C 11.875,1.16875 11.70625,1 11.5,1 Z"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 14 14" id="libre-file-pdf"><path d="M 4.234349,9.6879554 C 4.4938196,9.4431464 4.9332679,9.2025734 5.5411662,8.9723137 5.8161804,8.4287305 6.0893538,7.8296366 6.3047315,7.2976563 6.1230948,6.9183603 6.005958,6.5183992 5.956119,6.1067981 5.769105,4.5611761 7.5191644,4.6760298 7.2529534,6.1156781 7.2019354,6.3915766 7.0800472,6.7787926 6.8903069,7.2680799 7.1658742,7.758509 7.5273418,8.1278228 7.8152859,8.3720059 8.2090215,8.3091279 8.7691072,8.244371 9.1633588,8.3022399 c 1.0477512,0.153936 0.9146642,1.3077747 -0.016098,1.3077747 -0.4870406,0 -1.0968907,-0.379554 -1.4787289,-0.6715131 -0.5848385,0.1074861 -1.210123,0.2730991 -1.7479227,0.4630231 -0.171654,0.33071 -0.402282,0.7514464 -0.6077507,1.0474584 -0.8573489,1.23565 -1.987318,0.09633 -1.0785101,-0.7610244 z m 0.8991575,0.04225 C 4.9438399,9.8258694 4.6766714,9.9905614 4.5326072,10.149139 4.309457,10.394795 4.4563574,10.588035 4.7258834,10.324292 4.8586021,10.194373 5.0196475,9.9550154 5.1335065,9.7302074 Z M 8.4641816,8.8287301 C 8.6403296,8.9477089 8.882266,9.0715504 9.1473352,9.0765964 9.4566069,9.0823564 9.4301955,8.8807051 9.0858562,8.8301293 8.9359726,8.8080673 8.7198946,8.8076953 8.4641816,8.8287493 Z M 6.2533085,8.7330307 C 6.4994075,8.6508139 7.0300978,8.5273405 7.1631112,8.4961777 7.1487832,8.4809257 6.7671287,8.0884076 6.6416663,7.871888 6.5415473,8.1240278 6.2604179,8.7177811 6.2533085,8.7330307 Z M 6.4893881,5.7453683 C 6.4464761,5.9664557 6.5108261,6.3222508 6.5861181,6.540502 6.6709141,6.3628804 6.7768161,5.9360297 6.7337925,5.7268769 6.6908445,5.5180559 6.5365005,5.5026953 6.4893879,5.7453689 Z M 7.640148,1.26517 C 7.49432,1.11934 7.20625,1 7,1 L 2.5,1 C 2.29375,1 2.125,1.16875 2.125,1.375 l 0,11.25 C 2.125,12.83125 2.29375,13 2.5,13 l 9,0 c 0.20625,0 0.375,-0.16875 0.375,-0.375 l 0,-6.75 c 0,-0.20625 -0.11932,-0.49432 -0.265148,-0.64015 L 7.640148,1.26517 Z M 11.125,12.25 l -8.25,0 0,-10.5 4.115133,0 c 0.03417,0.006 0.09853,0.0323 0.12668,0.0525 l 3.955734,3.95571 c 0.02018,0.0281 0.04683,0.0925 0.05245,0.12668 l 0,6.36513 z M 11.5,1 9.25,1 C 9.04375,1 8.99432,1.11932 9.140148,1.26515 l 2.46968,2.46968 C 11.75568,3.88068 11.875,3.83125 11.875,3.625 l 0,-2.25 C 11.875,1.16875 11.70625,1 11.5,1 Z"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 14 14" id="libre-file-text"><path d="m 7.017858,10.877949 -3.017858,0 0,-1.0714917 3.017858,0 z M 10,8.8986883 l -6,0 0,-1.071492 6,0 z m 0,-1.976332 -6,0 0,-1.071492 6,0 z M 7.640148,1.26517 C 7.49432,1.11934 7.20625,1 7,1 L 2.5,1 C 2.29375,1 2.125,1.16875 2.125,1.375 l 0,11.25 C 2.125,12.83125 2.29375,13 2.5,13 l 9,0 c 0.20625,0 0.375,-0.16875 0.375,-0.375 l 0,-6.75 c 0,-0.20625 -0.11932,-0.49432 -0.265148,-0.64015 L 7.640148,1.26517 Z M 11.125,12.25 l -8.25,0 0,-10.5 4.115133,0 c 0.03417,0.006 0.09853,0.0323 0.12668,0.0525 l 3.955734,3.95571 c 0.02018,0.0281 0.04683,0.0925 0.05245,0.12668 l 0,6.36513 z M 11.5,1 9.25,1 C 9.04375,1 8.99432,1.11932 9.140148,1.26515 l 2.46968,2.46968 C 11.75568,3.88068 11.875,3.83125 11.875,3.625 l 0,-2.25 C 11.875,1.16875 11.70625,1 11.5,1 Z"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 14 14" id="libre-file-video"><path d="m 10,9.7783597 -0.763335,0 0,-0.656471 0.763335,0 z m 0,0.4885683 -0.763335,0 0,0.656471 0.763335,0 z m -1.450381,-4.5801573 -3.099202,0 0,2.290078 3.099202,0 z M 10,7.9714097 l -0.763335,0 0,0.656435 0.763335,0 z m 0,-1.1396 -0.763335,0 0,0.656471 0.763335,0 z m 0,-1.145039 -0.763335,0 0,0.656471 0.763335,0 z m -5.236665,0 -0.763335,0 0,0.656471 0.763335,0 z m 0,4.5801573 -0.763335,0 0,0.656471 0.763335,0 z m 0,-1.1450393 -0.763335,0 0,0.656471 0.763335,0 z m 3.786284,-0.488569 -3.099202,0 0,2.2900793 3.099202,0 z m -3.786284,-0.66191 -0.763335,0 0,0.656435 0.763335,0 z m 0,-1.1396 -0.763335,0 0,0.656471 0.763335,0 z M 7.640148,1.26517 C 7.49432,1.11934 7.20625,1 7,1 L 2.5,1 C 2.29375,1 2.125,1.16875 2.125,1.375 l 0,11.25 C 2.125,12.83125 2.29375,13 2.5,13 l 9,0 c 0.20625,0 0.375,-0.16875 0.375,-0.375 l 0,-6.75 c 0,-0.20625 -0.11932,-0.49432 -0.265148,-0.64015 L 7.640148,1.26517 Z M 11.125,12.25 l -8.25,0 0,-10.5 4.115133,0 c 0.03417,0.006 0.09853,0.0323 0.12668,0.0525 l 3.955734,3.95571 c 0.02018,0.0281 0.04683,0.0925 0.05245,0.12668 l 0,6.36513 z M 11.5,1 9.25,1 C 9.04375,1 8.99432,1.11932 9.140148,1.26515 l 2.46968,2.46968 C 11.75568,3.88068 11.875,3.83125 11.875,3.625 l 0,-2.25 C 11.875,1.16875 11.70625,1 11.5,1 Z"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 14 14" id="libre-file"><path d="M 7.640148,1.26517 C 7.49432,1.11934 7.20625,1 7,1 L 2.5,1 C 2.29375,1 2.125,1.16875 2.125,1.375 l 0,11.25 C 2.125,12.83125 2.29375,13 2.5,13 l 9,0 c 0.20625,0 0.375,-0.16875 0.375,-0.375 l 0,-6.75 c 0,-0.20625 -0.11932,-0.49432 -0.265148,-0.64015 L 7.640148,1.26517 Z M 11.125,12.25 l -8.25,0 0,-10.5 4.115133,0 c 0.03417,0.006 0.09853,0.0323 0.12668,0.0525 l 3.955734,3.95571 c 0.02018,0.0281 0.04683,0.0925 0.05245,0.12668 l 0,6.36513 z M 11.5,1 9.25,1 C 9.04375,1 8.99432,1.11932 9.140148,1.26515 l 2.46968,2.46968 C 11.75568,3.88068 11.875,3.83125 11.875,3.625 l 0,-2.25 C 11.875,1.16875 11.70625,1 11.5,1 Z"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 14 14" id="libre-film"><path d="M 3.4,11 V 10.2 Q 3.4,10.0375 3.28125,9.91875 3.1625,9.8 3,9.8 H 2.2 Q 2.0375,9.8 1.91875,9.91875 1.8,10.0375 1.8,10.2 V 11 q 0,0.1625 0.11875,0.28125 Q 2.0375,11.4 2.2,11.4 H 3 q 0.1625,0 0.28125,-0.11875 Q 3.4,11.1625 3.4,11 z m 0,-2.4 V 7.8 Q 3.4,7.6375 3.28125,7.51875 3.1625,7.4 3,7.4 H 2.2 Q 2.0375,7.4 1.91875,7.51875 1.8,7.6375 1.8,7.8 V 8.6 Q 1.8,8.7625 1.91875,8.88125 2.0375,9 2.2,9 H 3 Q 3.1625,9 3.28125,8.88125 3.4,8.7625 3.4,8.6 z m 0,-2.4 V 5.4 Q 3.4,5.2375 3.28125,5.11875 3.1625,5 3,5 H 2.2 Q 2.0375,5 1.91875,5.11875 1.8,5.2375 1.8,5.4 V 6.2 Q 1.8,6.3625 1.91875,6.48125 2.0375,6.6 2.2,6.6 H 3 Q 3.1625,6.6 3.28125,6.48125 3.4,6.3625 3.4,6.2 z M 9.8,11 V 7.8 Q 9.8,7.6375 9.68125,7.51875 9.5625,7.4 9.4,7.4 H 4.6 Q 4.4375,7.4 4.31875,7.51875 4.2,7.6375 4.2,7.8 V 11 q 0,0.1625 0.11875,0.28125 Q 4.4375,11.4 4.6,11.4 h 4.8 q 0.1625,0 0.28125,-0.11875 Q 9.8,11.1625 9.8,11 z M 3.4,3.8 V 3 Q 3.4,2.8375 3.28125,2.71875 3.1625,2.6 3,2.6 H 2.2 Q 2.0375,2.6 1.91875,2.71875 1.8,2.8375 1.8,3 V 3.8 Q 1.8,3.9625 1.91875,4.08125 2.0375,4.2 2.2,4.2 H 3 Q 3.1625,4.2 3.28125,4.08125 3.4,3.9625 3.4,3.8 z M 12.2,11 V 10.2 Q 12.2,10.0375 12.08125,9.91875 11.9625,9.8 11.8,9.8 H 11 Q 10.8375,9.8 10.71875,9.91875 10.6,10.0375 10.6,10.2 V 11 q 0,0.1625 0.11875,0.28125 Q 10.8375,11.4 11,11.4 h 0.8 q 0.1625,0 0.28125,-0.11875 Q 12.2,11.1625 12.2,11 z M 9.8,6.2 V 3 Q 9.8,2.8375 9.68125,2.71875 9.5625,2.6 9.4,2.6 H 4.6 Q 4.4375,2.6 4.31875,2.71875 4.2,2.8375 4.2,3 V 6.2 Q 4.2,6.3625 4.31875,6.48125 4.4375,6.6 4.6,6.6 H 9.4 Q 9.5625,6.6 9.68125,6.48125 9.8,6.3625 9.8,6.2 z m 2.4,2.4 V 7.8 Q 12.2,7.6375 12.08125,7.51875 11.9625,7.4 11.8,7.4 H 11 Q 10.8375,7.4 10.71875,7.51875 10.6,7.6375 10.6,7.8 v 0.8 q 0,0.1625 0.11875,0.28125 Q 10.8375,9 11,9 h 0.8 Q 11.9625,9 12.08125,8.88125 12.2,8.7625 12.2,8.6 z m 0,-2.4 V 5.4 Q 12.2,5.2375 12.08125,5.11875 11.9625,5 11.8,5 H 11 Q 10.8375,5 10.71875,5.11875 10.6,5.2375 10.6,5.4 v 0.8 q 0,0.1625 0.11875,0.28125 Q 10.8375,6.6 11,6.6 h 0.8 q 0.1625,0 0.28125,-0.11875 Q 12.2,6.3625 12.2,6.2 z m 0,-2.4 V 3 Q 12.2,2.8375 12.08125,2.71875 11.9625,2.6 11.8,2.6 H 11 Q 10.8375,2.6 10.71875,2.71875 10.6,2.8375 10.6,3 v 0.8 q 0,0.1625 0.11875,0.28125 Q 10.8375,4.2 11,4.2 h 0.8 q 0.1625,0 0.28125,-0.11875 Q 12.2,3.9625 12.2,3.8 z m 0.8,-1 v 8.4 q 0,0.4125 -0.29375,0.70625 Q 12.4125,12.2 12,12.2 H 2 Q 1.5875,12.2 1.29375,11.90625 1,11.6125 1,11.2 V 2.8 Q 1,2.3875 1.29375,2.09375 1.5875,1.8 2,1.8 h 10 q 0.4125,0 0.70625,0.29375 Q 13,2.3875 13,2.8 z"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 14 14" id="libre-folder-archive"><path d="M 2.6152344 1.9238281 C 2.1729297 1.9238281 1.7938698 2.0811242 1.4765625 2.3984375 C 1.1592545 2.7157442 1 3.0967558 1 3.5390625 L 1 10.460938 C 1 10.903244 1.1592545 11.284256 1.4765625 11.601562 C 1.7938698 11.918869 2.1729297 12.076172 2.6152344 12.076172 L 11.384766 12.076172 C 11.827072 12.076172 12.206131 11.918869 12.523438 11.601562 C 12.840744 11.284256 13 10.903244 13 10.460938 L 13 5.3847656 C 13 4.942459 12.840744 4.5634004 12.523438 4.2460938 C 12.206131 3.9287871 11.827072 3.7695312 11.384766 3.7695312 L 6.5390625 3.7695312 L 6.5390625 3.5390625 C 6.5390625 3.0967558 6.3798067 2.7157442 6.0625 2.3984375 C 5.7451933 2.0811242 5.3661348 1.9238281 4.9238281 1.9238281 L 2.6152344 1.9238281 z M 4.4980469 4.7832031 L 6.7480469 4.7832031 C 6.8511719 4.7832031 6.9954454 4.8431006 7.0683594 4.9160156 L 9.0527344 6.9003906 C 9.1256484 6.9733056 9.1855469 7.1175781 9.1855469 7.2207031 L 9.1855469 10.595703 C 9.1855469 10.698823 9.1011719 10.783203 8.9980469 10.783203 L 4.4980469 10.783203 C 4.394922 10.783203 4.3105469 10.698828 4.3105469 10.595703 L 4.3105469 4.9707031 C 4.3105469 4.8675781 4.394922 4.7832031 4.4980469 4.7832031 z M 7.8730469 4.7832031 L 8.9980469 4.7832031 C 9.1011719 4.7832031 9.1855469 4.8675781 9.1855469 4.9707031 L 9.1855469 6.0957031 C 9.1855469 6.1988281 9.1256604 6.2233156 9.0527344 6.1503906 L 7.8183594 4.9160156 C 7.7454454 4.8431006 7.7699219 4.7832031 7.8730469 4.7832031 z M 4.6855469 5.1582031 L 4.6855469 10.408203 L 8.8105469 10.408203 L 8.8105469 7.2265625 C 8.8077369 7.2094725 8.7952462 7.1761594 8.7851562 7.1621094 L 6.8066406 5.1835938 C 6.7925656 5.1734937 6.7592725 5.1612031 6.7421875 5.1582031 L 4.6855469 5.1582031 z M 6.2734375 5.6699219 L 6.703125 5.6699219 L 6.703125 6.0976562 L 7.1308594 6.0976562 L 7.1308594 6.5273438 L 6.703125 6.5273438 L 6.703125 6.9550781 L 7.1308594 6.9550781 L 7.1308594 7.3847656 L 6.703125 7.3847656 L 6.703125 7.8125 L 6.9667969 7.8125 C 7.0159029 7.8125 7.0597091 7.8264528 7.0976562 7.8554688 C 7.1356022 7.8844857 7.1623873 7.9238271 7.1757812 7.9707031 L 7.5332031 9.1386719 C 7.5510701 9.1989419 7.5605469 9.256696 7.5605469 9.3125 C 7.5605469 9.497768 7.4782362 9.6517865 7.3164062 9.7734375 C 7.1545762 9.8950895 6.950895 9.9550781 6.703125 9.9550781 C 6.4553583 9.9550781 6.2497206 9.8950955 6.0878906 9.7734375 C 5.9260606 9.6517865 5.8457031 9.497768 5.8457031 9.3125 C 5.8457031 9.2567 5.8551769 9.1989399 5.8730469 9.1386719 C 5.9199229 8.9980469 6.0544106 8.5558036 6.2753906 7.8125 L 6.2753906 7.3847656 L 6.703125 7.3847656 L 6.703125 6.9550781 L 6.2734375 6.9550781 L 6.2734375 6.5273438 L 6.703125 6.5273438 L 6.703125 6.0976562 L 6.2734375 6.0976562 L 6.2734375 5.6699219 z M 6.703125 9.0976562 C 6.5848216 9.0976562 6.484094 9.1196994 6.4003906 9.1621094 C 6.3166836 9.2045194 6.2734375 9.254461 6.2734375 9.3125 C 6.2734375 9.37054 6.3166846 9.4204806 6.4003906 9.4628906 C 6.4840936 9.5053006 6.5848216 9.5273437 6.703125 9.5273438 C 6.8214316 9.5273438 6.9221561 9.5053006 7.0058594 9.4628906 C 7.0895664 9.4204806 7.1308594 9.37054 7.1308594 9.3125 C 7.1308594 9.25446 7.0895654 9.2045204 7.0058594 9.1621094 C 6.9221564 9.1196994 6.8214316 9.0976562 6.703125 9.0976562 z "/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 14 14" id="libre-folder-attachments"><path d="M 2.6152344 1.9238281 C 2.1729297 1.9238281 1.7938698 2.0811242 1.4765625 2.3984375 C 1.1592545 2.7157442 1 3.0967558 1 3.5390625 L 1 10.460938 C 1 10.903244 1.1592545 11.284256 1.4765625 11.601562 C 1.7938698 11.918869 2.1729297 12.076172 2.6152344 12.076172 L 11.384766 12.076172 C 11.827072 12.076172 12.206131 11.918869 12.523438 11.601562 C 12.840744 11.284256 13 10.903244 13 10.460938 L 13 5.3847656 C 13 4.942459 12.840744 4.5634004 12.523438 4.2460938 C 12.206131 3.9287871 11.827072 3.7695312 11.384766 3.7695312 L 6.5390625 3.7695312 L 6.5390625 3.5390625 C 6.5390625 3.0967558 6.3798067 2.7157442 6.0625 2.3984375 C 5.7451933 2.0811242 5.3661348 1.9238281 4.9238281 1.9238281 L 2.6152344 1.9238281 z M 5.453125 4.7910156 C 5.904555 4.7910156 6.2944769 4.9385637 6.6230469 5.234375 L 9.2167969 7.6132812 C 9.2453635 7.6394579 9.2597656 7.6678041 9.2597656 7.6992188 C 9.2597656 7.7411041 9.2160496 7.8029698 9.1289062 7.8828125 C 9.0417629 7.9626555 8.9754008 8.0019531 8.9296875 8.0019531 C 8.8925442 8.0019531 8.8586481 7.9890673 8.8300781 7.9628906 L 6.2324219 5.5800781 C 6.0067085 5.3785075 5.7484613 5.2773437 5.4570312 5.2773438 C 5.1541746 5.2773438 4.8999763 5.3759306 4.6914062 5.5722656 C 4.4828329 5.7686006 4.3769531 6.0057161 4.3769531 6.2832031 C 4.3769531 6.5580725 4.4859817 6.7932348 4.703125 6.9921875 L 8.0292969 10.044922 C 8.2092969 10.209844 8.416104 10.291016 8.6503906 10.291016 C 8.8332473 10.291016 8.9854687 10.236901 9.1054688 10.126953 C 9.2254687 10.017006 9.2851562 9.8784768 9.2851562 9.7109375 C 9.2851562 9.4962778 9.195625 9.3055467 9.015625 9.140625 L 6.5253906 6.859375 C 6.451104 6.7965477 6.3647215 6.765625 6.2675781 6.765625 C 6.1847215 6.765625 6.1167867 6.7901057 6.0625 6.8398438 C 6.0082167 6.8895818 5.9804687 6.9533802 5.9804688 7.0292969 C 5.9804688 7.1130665 6.016464 7.1890853 6.0878906 7.2597656 L 7.8457031 8.8691406 C 7.8742698 8.8953173 7.8867188 8.9256166 7.8867188 8.9570312 C 7.8867188 8.9989159 7.8424762 9.0594733 7.7539062 9.140625 C 7.6653329 9.221777 7.5984477 9.2617187 7.5527344 9.2617188 C 7.5184477 9.2617188 7.4875544 9.2488329 7.4589844 9.2226562 L 5.7011719 7.6132812 C 5.5211719 7.4535953 5.4316406 7.2596632 5.4316406 7.0292969 C 5.4316406 6.8146372 5.5129212 6.6316365 5.6757812 6.4824219 C 5.8386379 6.3332072 6.037201 6.2578125 6.2714844 6.2578125 C 6.5229144 6.2578125 6.7358696 6.340938 6.9101562 6.5058594 L 9.4003906 8.7871094 C 9.6861106 9.043651 9.828125 9.3522988 9.828125 9.7109375 C 9.828125 10.01722 9.7159477 10.273663 9.4902344 10.480469 C 9.2645177 10.687275 8.984674 10.791016 8.6503906 10.791016 C 8.264674 10.791016 7.9282915 10.658264 7.6425781 10.396484 L 4.3125 7.3496094 C 3.989643 7.048562 3.828125 6.695486 3.828125 6.2871094 C 3.828125 5.8708787 3.9864956 5.5171382 4.3007812 5.2265625 C 4.6150656 4.9359865 4.9988383 4.7910156 5.453125 4.7910156 z "/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 14 14" id="libre-folder-backup"><path d="M 2.6152344 1.9238281 C 2.1729297 1.9238281 1.7938698 2.0811242 1.4765625 2.3984375 C 1.1592545 2.7157442 1 3.0967558 1 3.5390625 L 1 10.460938 C 1 10.903244 1.1592545 11.284256 1.4765625 11.601562 C 1.7938698 11.918869 2.1729297 12.076172 2.6152344 12.076172 L 11.384766 12.076172 C 11.827072 12.076172 12.206131 11.918869 12.523438 11.601562 C 12.840744 11.284256 13 10.903244 13 10.460938 L 13 5.3847656 C 13 4.942459 12.840744 4.5634004 12.523438 4.2460938 C 12.206131 3.9287871 11.827072 3.7695312 11.384766 3.7695312 L 6.5390625 3.7695312 L 6.5390625 3.5390625 C 6.5390625 3.0967558 6.3798067 2.7157442 6.0625 2.3984375 C 5.7451933 2.0811242 5.3661348 1.9238281 4.9238281 1.9238281 L 2.6152344 1.9238281 z M 4.1757812 4.8671875 L 9.7148438 4.8671875 C 9.7773438 4.8671875 9.8312798 4.8919269 9.8769531 4.9414062 C 9.9226265 4.9908856 9.9453125 5.0494792 9.9453125 5.1171875 L 9.9453125 6.1171875 C 9.9453125 6.1848958 9.9226265 6.2434894 9.8769531 6.2929688 C 9.8312798 6.3424481 9.7773438 6.3671875 9.7148438 6.3671875 L 4.1757812 6.3671875 C 4.1132813 6.3671875 4.0593449 6.3424481 4.0136719 6.2929688 C 3.9679985 6.2434894 3.9453125 6.1848959 3.9453125 6.1171875 L 3.9453125 5.1171875 C 3.9453125 5.0494792 3.9679985 4.9908856 4.0136719 4.9414062 C 4.0593445 4.8919269 4.1132809 4.8671875 4.1757812 4.8671875 z M 4.40625 6.6171875 L 9.484375 6.6171875 C 9.546875 6.6171875 9.600811 6.6419276 9.6464844 6.6914062 C 9.6921577 6.7408856 9.7148438 6.7994792 9.7148438 6.8671875 L 9.7148438 10.617188 C 9.7148438 10.684895 9.6921577 10.743489 9.6464844 10.792969 C 9.600811 10.842449 9.546875 10.867188 9.484375 10.867188 L 4.40625 10.867188 C 4.34375 10.867188 4.2898136 10.842449 4.2441406 10.792969 C 4.1984673 10.743489 4.1757812 10.684895 4.1757812 10.617188 L 4.1757812 6.8671875 C 4.1757812 6.7994792 4.1984673 6.7408856 4.2441406 6.6914062 C 4.289814 6.6419276 4.3437503 6.6171875 4.40625 6.6171875 z M 6.484375 7.3671875 C 6.421875 7.3671875 6.367939 7.3919276 6.3222656 7.4414062 C 6.2765923 7.4908856 6.2519531 7.5494792 6.2519531 7.6171875 C 6.2519531 7.6848958 6.2765923 7.7434894 6.3222656 7.7929688 C 6.367939 7.8424474 6.421875 7.8671875 6.484375 7.8671875 L 7.40625 7.8671875 C 7.46875 7.8671875 7.522686 7.8424474 7.5683594 7.7929688 C 7.6140327 7.7434894 7.6367188 7.6848958 7.6367188 7.6171875 C 7.6367188 7.5494792 7.6140327 7.4908856 7.5683594 7.4414062 C 7.522686 7.3919276 7.46875 7.3671875 7.40625 7.3671875 L 6.484375 7.3671875 z "/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 14 14" id="libre-folder-document"><path d="M 2.6152344 1.9238281 C 2.1729297 1.9238281 1.7938698 2.0811242 1.4765625 2.3984375 C 1.1592545 2.7157442 1 3.0967558 1 3.5390625 L 1 10.460938 C 1 10.903244 1.1592545 11.284256 1.4765625 11.601562 C 1.7938698 11.918869 2.1729297 12.076172 2.6152344 12.076172 L 11.384766 12.076172 C 11.827072 12.076172 12.206131 11.918869 12.523438 11.601562 C 12.840744 11.284256 13 10.903244 13 10.460938 L 13 5.3847656 C 13 4.942459 12.840744 4.5634004 12.523438 4.2460938 C 12.206131 3.9287871 11.827072 3.7695312 11.384766 3.7695312 L 6.5390625 3.7695312 L 6.5390625 3.5390625 C 6.5390625 3.0967558 6.3798067 2.7157442 6.0625 2.3984375 C 5.7451933 2.0811242 5.3661348 1.9238281 4.9238281 1.9238281 L 2.6152344 1.9238281 z M 4.5996094 4.7128906 L 6.8496094 4.7128906 C 6.9527344 4.7128906 7.0970079 4.7727881 7.1699219 4.8457031 L 9.1542969 6.8300781 C 9.2272109 6.9029931 9.2871094 7.0472656 9.2871094 7.1503906 L 9.2871094 10.525391 C 9.2871094 10.628521 9.2027344 10.712891 9.0996094 10.712891 L 4.5996094 10.712891 C 4.4964844 10.712891 4.4121094 10.628516 4.4121094 10.525391 L 4.4121094 4.9003906 C 4.4121094 4.7972656 4.4964844 4.7128906 4.5996094 4.7128906 z M 7.9746094 4.7128906 L 9.0996094 4.7128906 C 9.2027344 4.7128906 9.2871094 4.7972656 9.2871094 4.9003906 L 9.2871094 6.0253906 C 9.2871094 6.1285156 9.2272229 6.1530031 9.1542969 6.0800781 L 7.9199219 4.8457031 C 7.8470079 4.7727881 7.8714844 4.7128906 7.9746094 4.7128906 z M 4.7871094 5.0878906 L 4.7871094 10.337891 L 8.9121094 10.337891 L 8.9121094 7.1542969 C 8.9092994 7.1372069 8.8968087 7.1058469 8.8867188 7.0917969 L 6.9082031 5.1132812 C 6.8941281 5.1031812 6.8627881 5.0908906 6.8457031 5.0878906 L 4.7871094 5.0878906 z M 5.3496094 7.0488281 L 6.6972656 7.0488281 L 6.6972656 8.5722656 L 5.3496094 8.5722656 L 5.3496094 7.0488281 z M 7.1816406 7.0488281 L 8.3496094 7.0488281 L 8.3496094 7.5839844 L 7.1816406 7.5839844 L 7.1816406 7.0488281 z M 7.1816406 8.0351562 L 8.3496094 8.0351562 L 8.3496094 8.5722656 L 7.1816406 8.5722656 L 7.1816406 8.0351562 z M 5.3496094 9.0253906 L 8.3496094 9.0253906 L 8.3496094 9.5605469 L 5.3496094 9.5605469 L 5.3496094 9.0253906 z "/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 14 14" id="libre-folder-featured"><path d="M 2.6152344 1.9238281 C 2.1729297 1.9238281 1.7938698 2.0811242 1.4765625 2.3984375 C 1.1592545 2.7157442 1 3.0967558 1 3.5390625 L 1 10.460938 C 1 10.903244 1.1592545 11.284256 1.4765625 11.601562 C 1.7938698 11.918869 2.1729297 12.076172 2.6152344 12.076172 L 11.384766 12.076172 C 11.827072 12.076172 12.206131 11.918869 12.523438 11.601562 C 12.840744 11.284256 13 10.903244 13 10.460938 L 13 5.3847656 C 13 4.942459 12.840744 4.5634004 12.523438 4.2460938 C 12.206131 3.9287871 11.827072 3.7695312 11.384766 3.7695312 L 6.5390625 3.7695312 L 6.5390625 3.5390625 C 6.5390625 3.0967558 6.3798067 2.7157442 6.0625 2.3984375 C 5.7451933 2.0811242 5.3661348 1.9238281 4.9238281 1.9238281 L 2.6152344 1.9238281 z M 3.9511719 4.7519531 L 10.201172 4.7519531 C 10.373047 4.7519531 10.520183 4.8131511 10.642578 4.9355469 C 10.764974 5.0579427 10.826172 5.2050781 10.826172 5.3769531 L 10.826172 10.126953 C 10.826172 10.298828 10.764974 10.445963 10.642578 10.568359 C 10.520183 10.690755 10.373047 10.751953 10.201172 10.751953 L 3.9511719 10.751953 C 3.7792965 10.751953 3.632161 10.690755 3.5097656 10.568359 C 3.3873696 10.445963 3.3261719 10.298828 3.3261719 10.126953 L 3.3261719 5.3769531 C 3.3261719 5.2050781 3.3873696 5.0579427 3.5097656 4.9355469 C 3.632161 4.8131511 3.7792965 4.7519531 3.9511719 4.7519531 z M 3.9511719 5.2519531 C 3.9173185 5.2519531 3.8880213 5.2643125 3.8632812 5.2890625 C 3.8385413 5.3137918 3.8261719 5.3430991 3.8261719 5.3769531 L 3.8261719 10.126953 C 3.8261719 10.160826 3.8385413 10.190124 3.8632812 10.214844 C 3.8880212 10.239584 3.9173185 10.251953 3.9511719 10.251953 L 10.201172 10.251953 C 10.235005 10.251953 10.264302 10.23959 10.289062 10.214844 C 10.313803 10.190117 10.326172 10.160813 10.326172 10.126953 L 10.326172 5.3769531 C 10.326172 5.3431198 10.313809 5.3138205 10.289062 5.2890625 C 10.264336 5.2643205 10.235032 5.2519531 10.201172 5.2519531 L 3.9511719 5.2519531 z M 5.0761719 5.7519531 C 5.2845052 5.7519531 5.4615885 5.8248698 5.6074219 5.9707031 C 5.7532553 6.1165365 5.8261719 6.2936198 5.8261719 6.5019531 C 5.8261719 6.7102865 5.7532553 6.8873698 5.6074219 7.0332031 C 5.4615885 7.1790365 5.2845052 7.2519531 5.0761719 7.2519531 C 4.8678385 7.2519531 4.6907552 7.1790365 4.5449219 7.0332031 C 4.3990885 6.8873698 4.3261719 6.7102865 4.3261719 6.5019531 C 4.3261719 6.2936198 4.3990885 6.1165365 4.5449219 5.9707031 C 4.6907552 5.8248698 4.8678385 5.7519531 5.0761719 5.7519531 z M 8.2011719 6.3769531 L 9.8261719 8.0019531 L 9.8261719 9.7519531 L 4.3261719 9.7519531 L 4.3261719 9.0019531 L 5.5761719 7.7519531 L 6.2011719 8.3769531 L 8.2011719 6.3769531 z "/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 14 14" id="libre-folder-open"><path d="m 13,7.76637 q 0,0.19797 -0.19798,0.4215 l -2.14582,2.529 Q 10.38159,11.04258 9.88664,11.26929 9.3917,11.49601 8.9702,11.49601 H 2.02182 q -0.217137,0 -0.386376,-0.083 -0.169239,-0.083 -0.169239,-0.27462 0,-0.19797 0.197978,-0.4215 L 3.81001,8.18789 Q 4.08462,7.86218 4.57956,7.63547 5.07451,7.40875 5.49601,7.40875 h 6.94838 q 0.21713,0 0.38637,0.083 Q 13,7.57475 13,7.76637 z M 10.80947,5.56945 V 6.59127 H 5.49601 q -0.60032,0 -1.25812,0.30336 Q 3.5801,7.19798 3.19053,7.6578 l -2.152212,2.529 -0.03193,0.0383 q 0,-0.0255 -0.0032,-0.0798 Q 1,10.09101 1,10.06546 V 3.93454 Q 1,3.34699 1.421501,2.92549 1.843002,2.50399 2.43055,2.50399 h 2.04364 q 0.58754,0 1.00905,0.4215 0.4215,0.4215 0.4215,1.00905 v 0.20437 h 3.47418 q 0.58755,0 1.00905,0.4215 0.4215,0.4215 0.4215,1.00904 z"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 14 14" id="libre-folder-orders"><path d="M 2.6152344 1.9238281 C 2.1729297 1.9238281 1.7938698 2.0811242 1.4765625 2.3984375 C 1.1592545 2.7157442 1 3.0967558 1 3.5390625 L 1 10.460938 C 1 10.903244 1.1592545 11.284256 1.4765625 11.601562 C 1.7938698 11.918869 2.1729297 12.076172 2.6152344 12.076172 L 11.384766 12.076172 C 11.827072 12.076172 12.206131 11.918869 12.523438 11.601562 C 12.840744 11.284256 13 10.903244 13 10.460938 L 13 5.3847656 C 13 4.942459 12.840744 4.5634004 12.523438 4.2460938 C 12.206131 3.9287871 11.827072 3.7695312 11.384766 3.7695312 L 6.5390625 3.7695312 L 6.5390625 3.5390625 C 6.5390625 3.0967558 6.3798067 2.7157442 6.0625 2.3984375 C 5.7451933 2.0811242 5.3661348 1.9238281 4.9238281 1.9238281 L 2.6152344 1.9238281 z M 4.5625 4.7519531 A 0.18387661 0.18387661 0 0 1 4.5800781 4.7539062 L 9.3613281 4.7539062 A 0.18387661 0.18387661 0 0 1 9.5488281 4.9414062 L 9.5488281 10.564453 A 0.18387661 0.18387661 0 0 1 9.3613281 10.751953 L 4.5800781 10.751953 A 0.18387661 0.18387661 0 0 1 4.3925781 10.564453 L 4.3925781 4.9414062 A 0.18387661 0.18387661 0 0 1 4.5332031 4.7539062 A 0.18387661 0.18387661 0 0 1 4.5625 4.7519531 z M 4.7675781 5.1132812 L 4.7675781 10.376953 L 9.1738281 10.376953 L 9.1738281 5.1132812 L 4.7675781 5.1132812 z M 9.0332031 5.2226562 L 9.0332031 5.2695312 L 8.0644531 5.2851562 L 8.0644531 5.2382812 L 9.0332031 5.2226562 z M 9.0332031 5.3320312 L 9.0332031 5.3789062 L 8.0644531 5.3945312 L 8.0644531 5.3476562 L 9.0332031 5.3320312 z M 9.0332031 5.4257812 L 9.0332031 5.4726562 L 8.0644531 5.4882812 L 8.0644531 5.4414062 L 9.0332031 5.4257812 z M 9.0332031 5.5195312 L 9.0332031 5.5664062 L 8.0644531 5.5820312 L 8.0644531 5.5351562 L 9.0332031 5.5195312 z M 9.0332031 5.6132812 L 9.0332031 5.6601562 L 8.0644531 5.6757812 L 8.0644531 5.6289062 L 9.0332031 5.6132812 z M 6.0488281 5.6914062 L 6.0488281 5.7382812 L 5.0800781 5.7539062 L 5.0800781 5.7070312 L 6.0488281 5.6914062 z M 7.4863281 5.6914062 L 7.4863281 5.7382812 L 6.5332031 5.7539062 L 6.5332031 5.7070312 L 7.4863281 5.6914062 z M 6.0488281 5.8007812 L 6.0488281 5.8476562 L 5.0800781 5.8632812 L 5.0800781 5.8164062 L 6.0488281 5.8007812 z M 7.4863281 5.8007812 L 7.4863281 5.8476562 L 6.5332031 5.8632812 L 6.5332031 5.8164062 L 7.4863281 5.8007812 z M 6.0488281 5.8945312 L 6.0488281 5.9414062 L 5.0800781 5.9570312 L 5.0800781 5.9101562 L 6.0488281 5.8945312 z M 7.4863281 5.8945312 L 7.4863281 5.9414062 L 6.5332031 5.9570312 L 6.5332031 5.9101562 L 7.4863281 5.8945312 z M 6.0488281 5.9882812 L 6.0488281 6.0351562 L 5.0800781 6.0507812 L 5.0800781 6.0039062 L 6.0488281 5.9882812 z M 7.4863281 5.9882812 L 7.4863281 6.0351562 L 6.5332031 6.0507812 L 6.5332031 6.0039062 L 7.4863281 5.9882812 z M 6.0488281 6.0820312 L 6.0488281 6.1289062 L 5.0800781 6.1445312 L 5.0800781 6.0976562 L 6.0488281 6.0820312 z M 7.4863281 6.0820312 L 7.4863281 6.1289062 L 6.5332031 6.1445312 L 6.5332031 6.0976562 L 7.4863281 6.0820312 z M 5.0019531 6.5507812 L 5.0644531 6.5507812 L 8.8925781 6.5507812 L 8.9550781 6.5507812 L 8.9550781 6.6132812 L 8.9550781 9.1289062 L 8.9550781 9.1757812 L 8.8925781 9.1757812 L 5.0644531 9.1757812 L 5.0019531 9.1757812 L 5.0019531 9.1289062 L 5.0019531 6.6132812 L 5.0019531 6.5507812 z M 5.1113281 6.6601562 L 5.1113281 6.7851562 C 5.1186188 6.7852373 5.1227941 6.7853993 5.1425781 6.7851562 C 5.2019313 6.7844264 5.3275518 6.7861261 5.5644531 6.7851562 C 5.622561 6.7849183 5.8975932 6.7852882 5.9707031 6.7851562 C 5.9707183 6.7184579 5.9707013 6.7309567 5.9707031 6.6601562 L 5.1113281 6.6601562 z M 6.0175781 6.6601562 C 6.0175763 6.7309535 6.0175932 6.7184588 6.0175781 6.7851562 C 6.2164989 6.7848349 6.76675 6.7850249 7.0957031 6.7851562 C 7.0957183 6.7184579 7.0957013 6.7309567 7.0957031 6.6601562 L 6.0175781 6.6601562 z M 7.1425781 6.6601562 C 7.1425763 6.7309535 7.1425932 6.7184588 7.1425781 6.7851562 C 7.3710132 6.7852529 7.5745254 6.7850142 7.8769531 6.7851562 C 7.8769692 6.718585 7.8769496 6.7308625 7.8769531 6.6601562 L 7.1425781 6.6601562 z M 7.9238281 6.6601562 C 7.9238505 6.7308641 7.9256756 6.7185819 7.9257812 6.7851562 C 8.3112504 6.7853324 8.3244277 6.7851462 8.8457031 6.7851562 L 8.8457031 6.6601562 L 7.9238281 6.6601562 z M 5.1113281 6.8320312 L 5.1113281 7.0039062 C 5.117418 7.0039307 5.1170611 7.0040277 5.1269531 7.0039062 C 5.1863063 7.0031764 5.3119268 7.0048759 5.5488281 7.0039062 C 5.6091709 7.0036592 5.8941451 7.0025286 5.9707031 7.0019531 C 5.9707466 6.920565 5.9706767 6.9206508 5.9707031 6.8320312 C 5.8976016 6.8321632 5.6225443 6.8317933 5.5644531 6.8320312 C 5.32762 6.8330011 5.2016581 6.8313064 5.1425781 6.8320312 C 5.1228848 6.8322732 5.118649 6.8321119 5.1113281 6.8320312 z M 6.0175781 6.8320312 C 6.0175518 6.9206505 6.0176214 6.9205622 6.0175781 7.0019531 C 6.2181461 7.0004059 6.7646192 6.9984898 7.0957031 6.9960938 C 7.0957446 6.9172763 7.0956776 6.917595 7.0957031 6.8320312 C 6.7667376 6.8318999 6.2164787 6.8317099 6.0175781 6.8320312 z M 7.1425781 6.8320312 C 7.1425527 6.9175947 7.1426194 6.9172737 7.1425781 6.9960938 C 7.3724787 6.9944636 7.5728355 6.9934924 7.8769531 6.9921875 C 7.8769933 6.9153045 7.8769273 6.9153815 7.8769531 6.8320312 C 7.5745159 6.8318892 7.3710221 6.8321279 7.1425781 6.8320312 z M 7.9257812 6.8320312 C 7.9259534 6.915377 7.9254964 6.9153058 7.9257812 6.9921875 C 8.3133838 6.9906045 8.3219435 6.9883169 8.8457031 6.9882812 L 8.8457031 6.8320312 C 8.3244361 6.8320212 8.3112618 6.8322074 7.9257812 6.8320312 z M 5.1113281 7.0507812 L 5.1113281 7.2070312 C 5.1222803 7.2071043 5.1277401 7.2072136 5.1425781 7.2070312 C 5.2019313 7.2063015 5.3119268 7.2080011 5.5488281 7.2070312 C 5.6088876 7.2067853 5.8941466 7.2071643 5.9707031 7.2070312 C 5.9707538 7.1398437 5.9706598 7.1237619 5.9707031 7.0507812 C 5.8941536 7.0509145 5.6091535 7.0505342 5.5488281 7.0507812 C 5.3119951 7.0517509 5.1860331 7.0500564 5.1269531 7.0507812 C 5.1171065 7.0509022 5.1174786 7.050804 5.1113281 7.0507812 z M 6.0175781 7.0507812 C 6.017535 7.1237652 6.0176286 7.1398388 6.0175781 7.2070312 C 6.2181973 7.2067195 6.7646433 7.2068986 7.0957031 7.2070312 C 7.0957538 7.1398437 7.0956598 7.1237619 7.0957031 7.0507812 C 6.7646081 7.0506463 6.2181261 7.0504693 6.0175781 7.0507812 z M 7.1425781 7.0507812 C 7.142535 7.1237652 7.1426286 7.1398388 7.1425781 7.2070312 C 7.3724203 7.2071287 7.5739918 7.2068899 7.8769531 7.2070312 C 7.8770031 7.1400719 7.8769101 7.1235468 7.8769531 7.0507812 C 7.5728274 7.0506396 7.3724869 7.0508802 7.1425781 7.0507812 z M 7.9277344 7.0507812 C 7.9280476 7.123546 7.9273401 7.1400706 7.9277344 7.2070312 C 8.3132047 7.2072059 8.3278733 7.2070213 8.8457031 7.2070312 L 8.8457031 7.0507812 C 8.3230633 7.0507762 8.3147924 7.0509562 7.9277344 7.0507812 z M 5.1113281 7.2539062 L 5.1113281 7.4101562 C 5.1190031 7.4099363 5.1285271 7.4105207 5.1582031 7.4101562 C 5.2175563 7.4094265 5.3275518 7.4111259 5.5644531 7.4101562 C 5.6222882 7.4099194 5.897602 7.410288 5.9707031 7.4101562 C 5.9707557 7.3501452 5.9706512 7.3194021 5.9707031 7.2539062 C 5.894155 7.2540393 5.6088703 7.2536603 5.5488281 7.2539062 C 5.3119951 7.2548759 5.2016581 7.2531814 5.1425781 7.2539062 C 5.1278081 7.2540877 5.1223654 7.2539772 5.1113281 7.2539062 z M 6.0175781 7.2539062 C 6.0175265 7.3194074 6.0176305 7.3501392 6.0175781 7.4101562 C 6.2165327 7.4098351 6.7667531 7.4100272 7.0957031 7.4101562 C 7.0957557 7.3501452 7.0956512 7.3194021 7.0957031 7.2539062 C 6.7646309 7.2537736 6.2181779 7.2535945 6.0175781 7.2539062 z M 7.1425781 7.2539062 C 7.1425265 7.3194074 7.1426305 7.3501392 7.1425781 7.4101562 C 7.37097 7.4102514 7.5756486 7.4100146 7.8769531 7.4101562 C 7.8770047 7.3503685 7.8769021 7.3191728 7.8769531 7.2539062 C 7.5739824 7.2537649 7.3724291 7.2540037 7.1425781 7.2539062 z M 7.9277344 7.2539062 C 7.9281493 7.3191806 7.929216 7.3503605 7.9296875 7.4101562 C 8.3125135 7.4103311 8.3313814 7.4101415 8.8457031 7.4101562 L 8.8457031 7.2539062 C 8.3278816 7.2538963 8.313216 7.2540809 7.9277344 7.2539062 z M 5.5644531 7.4570312 C 5.32762 7.4580012 5.2172831 7.4719314 5.1582031 7.4726562 C 5.1286631 7.4730191 5.1184581 7.4724519 5.1113281 7.4726562 L 5.1113281 7.6445312 C 5.1190031 7.6443113 5.1285271 7.6292707 5.1582031 7.6289062 C 5.2175563 7.6281763 5.3431768 7.6298759 5.5800781 7.6289062 C 5.6359511 7.6286775 5.9009916 7.6290367 5.9707031 7.6289062 C 5.9707525 7.5709027 5.9706461 7.5212842 5.9707031 7.4570312 C 5.8976104 7.457163 5.6222715 7.4567944 5.5644531 7.4570312 z M 6.0175781 7.4570312 C 6.0175214 7.5212909 6.0176273 7.5708963 6.0175781 7.6289062 C 6.2148591 7.6285754 6.7688724 7.6287786 7.0957031 7.6289062 C 7.0957525 7.5709027 7.0956461 7.5212842 7.0957031 7.4570312 C 6.7667409 7.4569022 6.2165125 7.4567101 6.0175781 7.4570312 z M 7.1425781 7.4570312 C 7.1425214 7.5212909 7.1426273 7.5708963 7.1425781 7.6289062 C 7.3695532 7.6290006 7.5762093 7.6287638 7.8769531 7.6289062 C 7.8770015 7.5711118 7.8768973 7.5210438 7.8769531 7.4570312 C 7.575639 7.4568896 7.3709787 7.4571264 7.1425781 7.4570312 z M 7.9296875 7.4570312 C 7.9302208 7.5210521 7.9310697 7.571104 7.9316406 7.6289062 C 8.3133323 7.6290817 8.3302115 7.6288914 8.8457031 7.6289062 L 8.8457031 7.4570312 C 8.3313893 7.4570165 8.312525 7.4572061 7.9296875 7.4570312 z M 8.8457031 7.6757812 C 8.3302203 7.6758867 8.3133434 7.6780875 7.9316406 7.6796875 C 7.9322048 7.7344433 7.9330245 7.7984297 7.9335938 7.8476562 C 8.3168465 7.8478305 8.3288546 7.8476463 8.8457031 7.8476562 L 8.8457031 7.6757812 z M 7.8769531 7.6796875 C 7.5761984 7.6810176 7.3695628 7.681962 7.1425781 7.6835938 C 7.1425349 7.7371317 7.1426065 7.7994414 7.1425781 7.8476562 C 7.3710132 7.8477529 7.5745254 7.8475142 7.8769531 7.8476562 C 7.8769819 7.7984355 7.8769092 7.7344358 7.8769531 7.6796875 z M 7.0957031 7.6835938 C 6.7688587 7.6859899 6.2148388 7.6879566 6.0175781 7.6894531 C 6.0175368 7.7408912 6.0176054 7.8011633 6.0175781 7.8476562 C 6.2164988 7.8473349 6.76675 7.8475249 7.0957031 7.8476562 C 7.0957316 7.7994459 7.0956597 7.7371259 7.0957031 7.6835938 z M 5.9707031 7.6894531 C 5.9009999 7.6899668 5.6359351 7.6911775 5.5800781 7.6914062 C 5.343245 7.6923759 5.2172831 7.6906814 5.1582031 7.6914062 C 5.1286631 7.6917691 5.1184581 7.6912018 5.1113281 7.6914062 L 5.1113281 7.8476562 C 5.1230257 7.8477108 5.1359461 7.8479297 5.1582031 7.8476562 C 5.2175563 7.8469265 5.3275518 7.8486261 5.5644531 7.8476562 C 5.622561 7.8474183 5.8975932 7.8477882 5.9707031 7.8476562 C 5.9707306 7.8011677 5.9706616 7.7408856 5.9707031 7.6894531 z M 5.1582031 7.8945312 C 5.1360481 7.8948035 5.122981 7.9019129 5.1113281 7.90625 L 5.1113281 8.0664062 C 5.1190031 8.0661862 5.1285271 8.0667707 5.1582031 8.0664062 C 5.2175564 8.0656773 5.3431768 8.051751 5.5800781 8.0507812 C 5.6359511 8.0505525 5.9009916 8.0509117 5.9707031 8.0507812 C 5.9707047 8.0107795 5.9706811 7.9390458 5.9707031 7.8945312 C 5.8976016 7.8946632 5.6225443 7.8942933 5.5644531 7.8945312 C 5.3276199 7.8955011 5.2172831 7.8938064 5.1582031 7.8945312 z M 6.0175781 7.8945312 C 6.0175562 7.9390496 6.0175797 8.0107779 6.0175781 8.0507812 C 6.2148591 8.0504504 6.7688724 8.0506536 7.0957031 8.0507812 C 7.0957047 8.0107795 7.0956811 7.9390458 7.0957031 7.8945312 C 6.7667377 7.8943999 6.2164786 7.8942099 6.0175781 7.8945312 z M 7.1425781 7.8945312 C 7.1425562 7.9390496 7.1425797 8.0107779 7.1425781 8.0507812 C 7.3695532 8.0508756 7.5762093 8.0506388 7.8769531 8.0507812 C 7.8769554 8.0108238 7.8769313 7.938935 7.8769531 7.8945312 C 7.5745159 7.8943892 7.3710221 7.8946279 7.1425781 7.8945312 z M 7.9335938 7.8945312 C 7.9341207 7.9389362 7.9330876 8.0108242 7.9335938 8.0507812 C 8.3147336 8.0509562 8.331313 8.0507665 8.8457031 8.0507812 L 8.8457031 7.8945312 C 8.328863 7.8945213 8.3168577 7.8947055 7.9335938 7.8945312 z M 8.8457031 8.0976562 C 8.3313217 8.0977615 8.3147446 8.099968 7.9335938 8.1015625 C 7.9340892 8.1401315 7.9350973 8.2233593 7.9355469 8.2578125 C 8.3161334 8.2562235 8.3324153 8.2540112 8.8457031 8.2539062 L 8.8457031 8.0976562 z M 7.8769531 8.1015625 C 7.5761984 8.1028926 7.3695628 8.103837 7.1425781 8.1054688 C 7.1425849 8.1439477 7.1425441 8.2274357 7.1425781 8.2617188 C 7.3695541 8.260087 7.576208 8.2591426 7.8769531 8.2578125 C 7.8769218 8.2233586 7.8769583 8.1401291 7.8769531 8.1015625 z M 7.0957031 8.1054688 C 6.7688587 8.1078649 6.2148388 8.1098316 6.0175781 8.1113281 C 6.0175858 8.1496454 6.0175429 8.2334478 6.0175781 8.2675781 C 6.2148598 8.2660816 6.7688709 8.2641149 7.0957031 8.2617188 C 7.0956689 8.2274333 7.0957099 8.143947 7.0957031 8.1054688 z M 5.9707031 8.1113281 C 5.9009999 8.1118418 5.6359351 8.1130525 5.5800781 8.1132812 C 5.343245 8.1142509 5.2172831 8.1125564 5.1582031 8.1132812 C 5.1286631 8.1136441 5.1184581 8.1130769 5.1113281 8.1132812 L 5.1113281 8.2695312 C 5.1190031 8.2693112 5.1285271 8.2698958 5.1582031 8.2695312 C 5.2175564 8.2688014 5.3431767 8.2705011 5.5800781 8.2695312 C 5.6359512 8.2693025 5.9009915 8.2680918 5.9707031 8.2675781 C 5.9706678 8.2334453 5.9707109 8.1496449 5.9707031 8.1113281 z M 5.1113281 8.3164062 L 5.1113281 8.4570312 C 5.1190031 8.4568113 5.1285271 8.4573957 5.1582031 8.4570312 C 5.2175563 8.4563014 5.3431767 8.458001 5.5800781 8.4570312 C 5.6359511 8.4568025 5.9009916 8.4571617 5.9707031 8.4570312 C 5.970635 8.4305912 5.9707436 8.3459928 5.9707031 8.3164062 C 5.901 8.3165367 5.635935 8.3161775 5.5800781 8.3164062 C 5.3432449 8.3173761 5.2172831 8.3156814 5.1582031 8.3164062 C 5.1286631 8.3167691 5.1184581 8.3162019 5.1113281 8.3164062 z M 6.0175781 8.3164062 C 6.0176185 8.3459895 6.0175103 8.4305978 6.0175781 8.4570312 C 6.2148591 8.4567004 6.7688724 8.4569036 7.0957031 8.4570312 C 7.095635 8.4305912 7.0957436 8.3459928 7.0957031 8.3164062 C 6.7688603 8.3162786 6.2148382 8.3160754 6.0175781 8.3164062 z M 7.1425781 8.3164062 C 7.1426185 8.3459895 7.1425103 8.4305978 7.1425781 8.4570312 C 7.3695532 8.4571256 7.5762093 8.4568888 7.8769531 8.4570312 C 7.8768885 8.4304133 7.8769913 8.3460852 7.8769531 8.3164062 C 7.5761997 8.3162638 7.3695619 8.3165006 7.1425781 8.3164062 z M 7.9355469 8.3164062 C 7.9359317 8.3460837 7.9371725 8.4304181 7.9375 8.4570312 C 8.3175329 8.4572053 8.3335159 8.4570165 8.8457031 8.4570312 L 8.8457031 8.3164062 C 8.3324222 8.3163915 8.3161452 8.3165808 7.9355469 8.3164062 z M 5.1113281 8.5039062 L 5.1113281 8.6601562 C 5.117418 8.6601807 5.1170611 8.6602778 5.1269531 8.6601562 C 5.1863063 8.6594264 5.3119268 8.6611261 5.5488281 8.6601562 C 5.6091709 8.6599092 5.8941451 8.6602895 5.9707031 8.6601562 C 5.9705757 8.6354893 5.97079 8.5321614 5.9707031 8.5039062 C 5.901 8.5040367 5.635935 8.5036775 5.5800781 8.5039062 C 5.3432449 8.504876 5.2172831 8.5031814 5.1582031 8.5039062 C 5.1286631 8.5042692 5.1184581 8.5037019 5.1113281 8.5039062 z M 6.0175781 8.5039062 C 6.0176646 8.5321528 6.0174513 8.6355029 6.0175781 8.6601562 C 6.2181456 8.6598443 6.7646207 8.6600213 7.0957031 8.6601562 C 7.0955757 8.6354893 7.09579 8.5321614 7.0957031 8.5039062 C 6.7688602 8.5037786 6.2148382 8.5035754 6.0175781 8.5039062 z M 7.1425781 8.5039062 C 7.1426646 8.5321528 7.1424513 8.6355029 7.1425781 8.6601562 C 7.3724779 8.6602552 7.5728368 8.6600146 7.8769531 8.6601562 C 7.8768319 8.6351333 7.8770356 8.5323934 7.8769531 8.5039062 C 7.5761997 8.5037638 7.369562 8.5040006 7.1425781 8.5039062 z M 7.9375 8.5039062 C 7.9378393 8.5323865 7.9392082 8.6351451 7.9394531 8.6601562 C 8.32314 8.6603283 8.3297264 8.6601513 8.8457031 8.6601562 L 8.8457031 8.5039062 C 8.3335237 8.5038915 8.3175443 8.5040803 7.9375 8.5039062 z M 5.1113281 8.7070312 L 5.1113281 8.8632812 C 5.1222803 8.8633543 5.1277401 8.8634635 5.1425781 8.8632812 C 5.2019313 8.8625523 5.3119268 8.848626 5.5488281 8.8476562 C 5.6088876 8.8474103 5.8941466 8.8477893 5.9707031 8.8476562 C 5.9707555 8.815208 5.9710208 8.8141237 5.9707031 8.7695312 C 5.9706396 8.7606128 5.9707593 8.7164859 5.9707031 8.7070312 C 5.8941536 8.7071645 5.6091535 8.7067842 5.5488281 8.7070312 C 5.3119951 8.7080011 5.1860331 8.7063064 5.1269531 8.7070312 C 5.1171065 8.7071522 5.1174786 8.707054 5.1113281 8.7070312 z M 6.0175781 8.7070312 C 6.0176341 8.7164798 6.0175149 8.7606197 6.0175781 8.7695312 C 6.017895 8.8140657 6.0196296 8.8151762 6.0214844 8.8476562 C 6.2217924 8.8473479 6.7658429 8.8475241 7.0957031 8.8476562 C 7.0957555 8.815208 7.0960208 8.8141237 7.0957031 8.7695312 C 7.0956396 8.7606128 7.0957593 8.7164859 7.0957031 8.7070312 C 6.7646081 8.7068963 6.2181261 8.7067193 6.0175781 8.7070312 z M 7.1425781 8.7070312 C 7.1426341 8.7164798 7.1425149 8.7606197 7.1425781 8.7695312 C 7.1428958 8.8140888 7.1426296 8.8151651 7.1425781 8.8476562 C 7.3736428 8.8477542 7.5758694 8.8475143 7.8808594 8.8476562 C 7.8796504 8.8196929 7.877191 8.8195666 7.8769531 8.7851562 C 7.8768752 8.7739398 7.87702 8.7190476 7.8769531 8.7070312 C 7.5728274 8.7068896 7.3724869 8.7071302 7.1425781 8.7070312 z M 7.9394531 8.7070312 C 7.9395596 8.7190399 7.9393752 8.7739488 7.9394531 8.7851562 C 7.9396909 8.8195276 7.9394441 8.8196775 7.9394531 8.8476562 C 8.3215527 8.8478281 8.3344838 8.8476465 8.8457031 8.8476562 L 8.8457031 8.7070312 C 8.3297352 8.7070263 8.323151 8.7072033 7.9394531 8.7070312 z M 8.8457031 8.8945312 C 8.3344929 8.8946006 8.3215634 8.896888 7.9394531 8.8984375 C 7.9392213 8.9604103 7.9389755 9.0434425 7.9394531 9.0664062 L 8.8457031 9.0664062 L 8.8457031 8.8945312 z M 7.8828125 8.8984375 C 7.5767958 8.8997509 7.3742638 8.9007078 7.1425781 8.9023438 C 7.1423425 8.9450895 7.1421757 9.0163302 7.1425781 9.0351562 C 7.1427791 9.0445672 7.1424168 9.0455613 7.1425781 9.0507812 C 7.1425781 9.0507812 7.1323631 9.0476512 7.1269531 9.0507812 L 7.1425781 9.0664062 L 7.8925781 9.0664062 C 7.8920943 9.043163 7.8870673 8.9603286 7.8828125 8.8984375 z M 7.0957031 8.9023438 C 6.7670285 8.9047114 6.2253664 8.9066655 6.0253906 8.9082031 C 6.0288904 8.9478817 6.0328184 9.0171579 6.0332031 9.0351562 C 6.033605 9.0539823 6.0329907 9.0621462 6.0332031 9.0664062 L 7.0957031 9.0664062 C 7.0954436 9.0611972 7.0961101 9.0542192 7.0957031 9.0351562 C 7.0952957 9.0160934 7.0954663 8.9450155 7.0957031 8.9023438 z M 5.9707031 8.9082031 C 5.8941551 8.9087746 5.6088703 8.9099103 5.5488281 8.9101562 C 5.311995 8.9111259 5.2016581 8.9094314 5.1425781 8.9101562 C 5.1278081 8.9103377 5.1223654 8.9102272 5.1113281 8.9101562 L 5.1113281 9.0664062 L 5.9863281 9.0664062 C 5.9860691 9.0611972 5.9711101 9.0542192 5.9707031 9.0351562 C 5.9703137 9.0169344 5.9704753 8.9478047 5.9707031 8.9082031 z M 6.5957031 9.2695312 L 6.5957031 9.3164062 L 5.0332031 9.3320312 L 5.0332031 9.2851562 L 6.5957031 9.2695312 z M 8.8457031 9.2695312 L 8.8457031 9.3164062 L 7.8925781 9.3320312 L 7.8925781 9.2851562 L 8.8457031 9.2695312 z M 5.0332031 9.3789062 L 6.5957031 9.3789062 L 6.5957031 9.4257812 L 5.0332031 9.4414062 L 5.0332031 9.3789062 z M 8.8457031 9.3789062 L 8.8457031 9.4257812 L 7.8925781 9.4414062 L 7.8925781 9.3945312 L 8.8457031 9.3789062 z M 6.5957031 9.4726562 L 6.5957031 9.5195312 L 5.0332031 9.5351562 L 5.0332031 9.4882812 L 6.5957031 9.4726562 z M 8.8457031 9.4726562 L 8.8457031 9.5351562 L 7.8925781 9.5351562 L 7.8925781 9.4882812 L 8.8457031 9.4726562 z M 6.5957031 9.5664062 L 6.5957031 9.6132812 L 5.0332031 9.6289062 L 5.0332031 9.5820312 L 6.5957031 9.5664062 z M 6.5957031 9.6601562 L 6.5957031 9.7070312 L 5.0332031 9.7226562 L 5.0332031 9.6757812 L 6.5957031 9.6601562 z M 6.5957031 9.7539062 L 6.5957031 9.8007812 L 5.0332031 9.8164062 L 5.0332031 9.7695312 L 6.5957031 9.7539062 z M 6.5957031 9.8632812 L 6.5957031 9.9101562 L 5.0332031 9.9257812 L 5.0332031 9.8789062 L 6.5957031 9.8632812 z M 6.5957031 9.9570312 L 6.5957031 10.003906 L 5.0332031 10.019531 L 5.0332031 9.9726562 L 6.5957031 9.9570312 z M 6.5957031 10.050781 L 6.5957031 10.097656 L 5.0332031 10.113281 L 5.0332031 10.066406 L 6.5957031 10.050781 z M 6.5957031 10.144531 L 6.5957031 10.191406 L 5.0332031 10.207031 L 5.0332031 10.160156 L 6.5957031 10.144531 z "/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 14 14" id="libre-folder-picture"><path d="M 2.6152344 1.9238281 C 2.1729297 1.9238281 1.7938698 2.0811242 1.4765625 2.3984375 C 1.1592545 2.7157442 1 3.0967558 1 3.5390625 L 1 10.460938 C 1 10.903244 1.1592545 11.284256 1.4765625 11.601562 C 1.7938698 11.918869 2.1729297 12.076172 2.6152344 12.076172 L 11.384766 12.076172 C 11.827072 12.076172 12.206131 11.918869 12.523438 11.601562 C 12.840744 11.284256 13 10.903244 13 10.460938 L 13 5.3847656 C 13 4.942459 12.840744 4.5634004 12.523438 4.2460938 C 12.206131 3.9287871 11.827072 3.7695312 11.384766 3.7695312 L 6.5390625 3.7695312 L 6.5390625 3.5390625 C 6.5390625 3.0967558 6.3798067 2.7157442 6.0625 2.3984375 C 5.7451933 2.0811242 5.3661348 1.9238281 4.9238281 1.9238281 L 2.6152344 1.9238281 z M 4.7167969 4.7128906 L 6.9667969 4.7128906 C 7.0699219 4.7128906 7.2122422 4.7727881 7.2851562 4.8457031 L 9.2714844 6.8300781 C 9.3443984 6.9029931 9.4042969 7.0472656 9.4042969 7.1503906 L 9.4042969 10.525391 C 9.4042969 10.628521 9.3199219 10.712891 9.2167969 10.712891 L 4.7167969 10.712891 C 4.6136669 10.712891 4.5292969 10.628516 4.5292969 10.525391 L 4.5292969 4.9003906 C 4.5292969 4.7972656 4.6136719 4.7128906 4.7167969 4.7128906 z M 8.0917969 4.7128906 L 9.2167969 4.7128906 C 9.3199219 4.7128906 9.4042969 4.7972656 9.4042969 4.9003906 L 9.4042969 6.0253906 C 9.4042969 6.1285156 9.3444104 6.1530031 9.2714844 6.0800781 L 8.0351562 4.8457031 C 7.9622423 4.7727881 7.9886719 4.7128906 8.0917969 4.7128906 z M 4.9042969 5.0878906 L 4.9042969 10.337891 L 9.0292969 10.337891 L 9.0292969 7.1542969 C 9.0264869 7.1372069 9.0120431 7.1058469 9.0019531 7.0917969 L 7.0234375 5.1132812 C 7.0093625 5.1031812 6.9780225 5.0908906 6.9609375 5.0878906 L 4.9042969 5.0878906 z M 5.8925781 7.1289062 C 6.1010769 7.1289062 6.2695312 7.2973435 6.2695312 7.5058594 C 6.2695312 7.7143927 6.101094 7.8828125 5.8925781 7.8828125 C 5.6840619 7.8828125 5.515625 7.7144098 5.515625 7.5058594 C 5.515625 7.2973606 5.6840448 7.1289062 5.8925781 7.1289062 z M 7.4296875 7.5566406 L 8.5039062 9.3886719 L 5.5039062 9.3886719 L 6.4628906 8.0957031 L 6.8046875 8.4453125 L 7.4296875 7.5566406 z "/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 14 14" id="libre-folder-users"><path d="M 2.6152344 1.9238281 C 2.1729297 1.9238281 1.7938698 2.0811242 1.4765625 2.3984375 C 1.1592545 2.7157442 1 3.0967558 1 3.5390625 L 1 10.460938 C 1 10.903244 1.1592545 11.284256 1.4765625 11.601562 C 1.7938698 11.918869 2.1729297 12.076172 2.6152344 12.076172 L 11.384766 12.076172 C 11.827072 12.076172 12.206131 11.918869 12.523438 11.601562 C 12.840744 11.284256 13 10.903244 13 10.460938 L 13 5.3847656 C 13 4.942459 12.840744 4.5634004 12.523438 4.2460938 C 12.206131 3.9287871 11.827072 3.7695312 11.384766 3.7695312 L 6.5390625 3.7695312 L 6.5390625 3.5390625 C 6.5390625 3.0967558 6.3798067 2.7157442 6.0625 2.3984375 C 5.7451933 2.0811242 5.3661348 1.9238281 4.9238281 1.9238281 L 2.6152344 1.9238281 z M 5.0507812 4.8886719 C 5.2715813 4.8886719 5.4609208 4.9667802 5.6171875 5.1230469 C 5.7734542 5.2793135 5.8515625 5.4667 5.8515625 5.6875 C 5.8515625 5.9083 5.7734542 6.0976396 5.6171875 6.2539062 C 5.4609208 6.4101729 5.2715813 6.4882813 5.0507812 6.4882812 C 4.8299812 6.4882812 4.6406417 6.4101729 4.484375 6.2539062 C 4.3281083 6.0976396 4.25 5.9083 4.25 5.6875 C 4.25 5.4667 4.3281083 5.2793135 4.484375 5.1230469 C 4.6406417 4.9667802 4.8299812 4.8886719 5.0507812 4.8886719 z M 8.6503906 4.8886719 C 8.8711906 4.8886719 9.0605302 4.9667802 9.2167969 5.1230469 C 9.3730635 5.2793135 9.4511719 5.4667 9.4511719 5.6875 C 9.4511719 5.9083 9.3730635 6.0976396 9.2167969 6.2539062 C 9.0605302 6.4101729 8.8711906 6.4882813 8.6503906 6.4882812 C 8.4295906 6.4882812 8.2422042 6.4101729 8.0859375 6.2539062 C 7.9296708 6.0976396 7.8515625 5.9083 7.8515625 5.6875 C 7.8515625 5.4667 7.9296708 5.2793135 8.0859375 5.1230469 C 8.2422042 4.9667802 8.4295906 4.8886719 8.6503906 4.8886719 z M 6.8515625 5.6875 C 7.1827625 5.6875 7.4648188 5.8046625 7.6992188 6.0390625 C 7.9336187 6.2734625 8.0507813 6.5574719 8.0507812 6.8886719 C 8.0507812 7.2198719 7.9336187 7.5019281 7.6992188 7.7363281 C 7.4648188 7.9707281 7.1827625 8.0878906 6.8515625 8.0878906 C 6.5203625 8.0878906 6.2363531 7.9707281 6.0019531 7.7363281 C 5.7675531 7.5019281 5.6503906 7.2198719 5.6503906 6.8886719 C 5.6503906 6.5574719 5.7675531 6.2734625 6.0019531 6.0390625 C 6.2363531 5.8046625 6.5203625 5.6875 6.8515625 5.6875 z M 4.2382812 6.4882812 C 4.2508146 6.4882812 4.2968667 6.509001 4.375 6.5527344 C 4.4531333 6.5964677 4.552801 6.6407469 4.6777344 6.6855469 C 4.8026677 6.7303469 4.9278479 6.7539063 5.0507812 6.7539062 C 5.1903813 6.7539062 5.3293302 6.7295073 5.4667969 6.6816406 C 5.4563969 6.7587073 5.4511719 6.8282719 5.4511719 6.8886719 C 5.4511719 7.1782719 5.534325 7.4437667 5.703125 7.6875 C 5.3656583 7.6979 5.0896667 7.831624 4.875 8.0878906 L 4.4570312 8.0878906 C 4.2862313 8.0878906 4.1420573 8.0453375 4.0253906 7.9609375 C 3.908724 7.8765375 3.8515625 7.7543302 3.8515625 7.5917969 C 3.8515625 6.8563302 3.9800146 6.4882813 4.2382812 6.4882812 z M 9.4628906 6.4882812 C 9.7211573 6.4882812 9.8496094 6.8563302 9.8496094 7.5917969 L 9.8515625 7.5917969 C 9.8515625 7.7543302 9.7924479 7.8765375 9.6757812 7.9609375 C 9.5591146 8.0453375 9.4149406 8.0878906 9.2441406 8.0878906 L 8.8261719 8.0878906 C 8.6116385 7.831624 8.3356469 7.6979 7.9980469 7.6875 C 8.1668469 7.4437667 8.25 7.1782719 8.25 6.8886719 C 8.25 6.8282719 8.244775 6.7587073 8.234375 6.6816406 C 8.3718417 6.7295073 8.5107906 6.7539063 8.6503906 6.7539062 C 8.773324 6.7539062 8.8985042 6.7323 9.0234375 6.6875 C 9.1483708 6.6427 9.2480385 6.5984208 9.3261719 6.5546875 C 9.4043052 6.5109542 9.4503573 6.4882813 9.4628906 6.4882812 z M 5.7324219 7.8886719 C 5.7532219 7.8886719 5.7983875 7.9102781 5.8671875 7.9550781 C 5.9359875 7.9998781 6.0104167 8.0502688 6.09375 8.1054688 C 6.1770833 8.1606688 6.2900875 8.2110594 6.4296875 8.2558594 C 6.5692875 8.3006594 6.7099625 8.3222656 6.8515625 8.3222656 C 6.9931625 8.3222656 7.1338375 8.3006594 7.2734375 8.2558594 C 7.4130375 8.2110594 7.5240885 8.1606688 7.6074219 8.1054688 C 7.6907552 8.0502687 7.7671375 7.9998781 7.8359375 7.9550781 C 7.9047375 7.9102781 7.94795 7.8886719 7.96875 7.8886719 C 8.0958167 7.8886719 8.2131594 7.9094385 8.3183594 7.9511719 C 8.4235594 7.9929052 8.5130042 8.0474542 8.5859375 8.1171875 C 8.6588708 8.1869208 8.7230302 8.2720271 8.7792969 8.3710938 C 8.8355635 8.4701604 8.8807292 8.5717813 8.9140625 8.6757812 C 8.9473958 8.7797813 8.9742271 8.893625 8.9960938 9.015625 C 9.0179604 9.137625 9.0336823 9.2504021 9.0410156 9.3554688 C 9.048349 9.4605354 9.0507812 9.5691542 9.0507812 9.6796875 C 9.0507812 9.9296875 8.974399 10.126684 8.8222656 10.271484 C 8.6701323 10.416284 8.4687969 10.488281 8.2167969 10.488281 L 5.484375 10.488281 C 5.2322417 10.488281 5.0309063 10.416284 4.8789062 10.271484 C 4.7269062 10.126684 4.650524 9.9296875 4.6503906 9.6796875 C 4.6503906 9.5692875 4.654776 9.4606688 4.6621094 9.3554688 C 4.6694427 9.2502687 4.6832115 9.1374917 4.7050781 9.015625 C 4.7269448 8.8937583 4.7557292 8.7799146 4.7890625 8.6757812 C 4.8223958 8.5716479 4.8656083 8.4700271 4.921875 8.3710938 C 4.9781417 8.2721604 5.0442542 8.1870542 5.1171875 8.1171875 C 5.1901208 8.0473208 5.2776125 7.9927719 5.3828125 7.9511719 C 5.4880125 7.9095719 5.6053552 7.8888052 5.7324219 7.8886719 z "/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 14 14" id="libre-folder-video"><path d="M 2.6152344 1.9238281 C 2.1729297 1.9238281 1.7938698 2.0811242 1.4765625 2.3984375 C 1.1592545 2.7157442 1 3.0967558 1 3.5390625 L 1 10.460938 C 1 10.903244 1.1592545 11.284256 1.4765625 11.601562 C 1.7938698 11.918869 2.1729297 12.076172 2.6152344 12.076172 L 11.384766 12.076172 C 11.827072 12.076172 12.206131 11.918869 12.523438 11.601562 C 12.840744 11.284256 13 10.903244 13 10.460938 L 13 5.3847656 C 13 4.942459 12.840744 4.5634004 12.523438 4.2460938 C 12.206131 3.9287871 11.827072 3.7695312 11.384766 3.7695312 L 6.5390625 3.7695312 L 6.5390625 3.5390625 C 6.5390625 3.0967558 6.3798067 2.7157442 6.0625 2.3984375 C 5.7451933 2.0811242 5.3661348 1.9238281 4.9238281 1.9238281 L 2.6152344 1.9238281 z M 4.5214844 4.6738281 L 6.7714844 4.6738281 C 6.8746094 4.6738281 7.0188829 4.7337256 7.0917969 4.8066406 L 9.078125 6.7910156 C 9.151039 6.8639306 9.2089844 7.0082031 9.2089844 7.1113281 L 9.2089844 10.486328 C 9.2089844 10.589458 9.1246094 10.673828 9.0214844 10.673828 L 4.5214844 10.673828 C 4.4183544 10.673828 4.3339844 10.589453 4.3339844 10.486328 L 4.3339844 4.8613281 C 4.3339844 4.7582031 4.4183594 4.6738281 4.5214844 4.6738281 z M 7.8964844 4.6738281 L 9.0214844 4.6738281 C 9.1246094 4.6738281 9.2089844 4.7582031 9.2089844 4.8613281 L 9.2089844 5.9863281 C 9.2089844 6.0894531 9.151051 6.1139406 9.078125 6.0410156 L 7.8417969 4.8066406 C 7.7688829 4.7337256 7.7933594 4.6738281 7.8964844 4.6738281 z M 4.7089844 5.0488281 L 4.7089844 10.298828 L 8.8339844 10.298828 L 8.8339844 7.1171875 C 8.8311744 7.1000975 8.8186837 7.0667844 8.8085938 7.0527344 L 6.8300781 5.0761719 C 6.8160031 5.0660719 6.7846631 5.0518281 6.7675781 5.0488281 L 4.7089844 5.0488281 z M 5.2714844 7.0175781 L 5.6542969 7.0175781 L 5.6542969 7.3457031 L 5.2714844 7.3457031 L 5.2714844 7.0175781 z M 5.9980469 7.0175781 L 7.546875 7.0175781 L 7.546875 8.1621094 L 5.9980469 8.1621094 L 5.9980469 7.0175781 z M 7.890625 7.0175781 L 8.2714844 7.0175781 L 8.2714844 7.3457031 L 7.890625 7.3457031 L 7.890625 7.0175781 z M 5.2714844 7.5898438 L 5.6542969 7.5898438 L 5.6542969 7.9179688 L 5.2714844 7.9179688 L 5.2714844 7.5898438 z M 7.890625 7.5898438 L 8.2714844 7.5898438 L 8.2714844 7.9179688 L 7.890625 7.9179688 L 7.890625 7.5898438 z M 5.2714844 8.1601562 L 5.6542969 8.1601562 L 5.6542969 8.4882812 L 5.2714844 8.4882812 L 5.2714844 8.1601562 z M 7.890625 8.1601562 L 8.2714844 8.1601562 L 8.2714844 8.4882812 L 7.890625 8.4882812 L 7.890625 8.1601562 z M 5.9980469 8.4902344 L 7.546875 8.4902344 L 7.546875 9.6347656 L 5.9980469 9.6347656 L 5.9980469 8.4902344 z M 5.2714844 8.734375 L 5.6542969 8.734375 L 5.6542969 9.0625 L 5.2714844 9.0625 L 5.2714844 8.734375 z M 7.890625 8.734375 L 8.2714844 8.734375 L 8.2714844 9.0625 L 7.890625 9.0625 L 7.890625 8.734375 z M 5.2714844 9.3066406 L 5.6542969 9.3066406 L 5.6542969 9.6347656 L 5.2714844 9.6347656 L 5.2714844 9.3066406 z M 7.890625 9.3066406 L 8.2714844 9.3066406 L 8.2714844 9.6347656 L 7.890625 9.6347656 L 7.890625 9.3066406 z "/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 14 14" id="libre-folder"><path d="m 13,5.384615 v 5.07693 q 0,0.66346 -0.47596,1.13942 -0.47596,0.47596 -1.13942,0.47596 H 2.61538 q -0.663457,0 -1.139418,-0.47596 Q 1,11.125005 1,10.461545 V 3.538465 Q 1,2.875005 1.475962,2.399045 1.951923,1.923075 2.61538,1.923075 h 2.3077 q 0.66346,0 1.13942,0.47597 0.47596,0.47596 0.47596,1.13942 v 0.23077 h 4.84616 q 0.66346,0 1.13942,0.47596 Q 13,4.721155 13,5.384615 z"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 14 14" id="libre-help"><path d="M 7,1 C 3.686607,1 1,3.68661 1,7 c 0,3.31339 2.686607,6 6,6 3.313393,0 6,-2.68661 6,-6 C 13,3.68661 10.313393,1 7,1 Z m 4.775893,4.08482 -1.647322,0.50625 C 9.959821,5.21607 9.724107,4.87321 9.424107,4.57321 9.124107,4.27321 8.78125,4.0375 8.40625,3.86875 L 8.9125,2.22143 c 0.6375,0.25446 1.221429,0.64018 1.722321,1.13839 0.500893,0.50357 0.886608,1.0875 1.141072,1.725 z M 7,9.57143 C 5.580357,9.57143 4.428571,8.41964 4.428571,7 4.428571,5.58036 5.580357,4.42857 7,4.42857 8.419643,4.42857 9.571429,5.58036 9.571429,7 9.571429,8.41964 8.419643,9.57143 7,9.57143 Z M 3.3625,3.3625 C 3.863393,2.86161 4.447321,2.47857 5.084821,2.22411 l 0.50625,1.64732 c -0.375,0.16875 -0.717857,0.40446 -1.017857,0.70446 -0.3,0.3 -0.535714,0.64286 -0.704464,1.01786 L 2.221429,5.0875 C 2.478571,4.44732 2.864286,3.86339 3.3625,3.3625 Z M 2.224107,8.91518 3.871429,8.40893 c 0.16875,0.375 0.404464,0.71786 0.704464,1.01786 0.3,0.3 0.642857,0.53571 1.017857,0.70446 L 5.0875,11.77857 C 4.45,11.52411 3.866071,11.13839 3.365179,10.64018 2.864286,10.13661 2.478571,9.55268 2.224107,8.91518 Z M 10.6375,10.6375 c -0.500893,0.50089 -1.084821,0.88393 -1.722321,1.13839 l -0.50625,-1.64732 c 0.375,-0.16875 0.717857,-0.40446 1.017857,-0.70446 0.3,-0.3 0.535714,-0.64286 0.704464,-1.01786 l 1.647321,0.50625 c -0.257142,0.64018 -0.642857,1.22411 -1.141071,1.725 z"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 14 14" id="libre-home"><path d="m 12.829686,6.6209583 -4.2411171,-4.7173 c -0.41099,-0.45697 -1.000463,-0.72527 -1.613754,-0.71676 -0.614554,0.002 -1.201601,0.26554 -1.610189,0.72453 l -4.196428,4.71195 c -0.24399498,0.27418 -0.21958298,0.69396 0.05422,0.93798 0.126788,0.11279 0.284499,0.16815 0.44169,0.16815 0.182791,0 0.365063,-0.0751 0.496307,-0.22262 l 4.196552,-4.70955 c 0.157712,-0.1772 0.383905,-0.2771 0.621016,-0.2771 6.44e-4,0 0.0015,0 0.002,0 0.236394,0 0.462463,0.0983 0.62052,0.27405 l 4.2412421,4.71616 c 0.245182,0.27331 0.665605,0.2948 0.938121,0.0493 0.272813,-0.24516 0.295071,-0.66573 0.04979,-0.93876 z m -5.2464081,-3.07186 c -0.152116,-0.17806 -0.374471,-0.28078 -0.608587,-0.28078 -0.23419,0 -0.45657,0.1027 -0.608537,0.28078 l -3.414261,4.00196 c -0.211956,0.24832 -0.303216,0.57788 -0.249119,0.89991 l 0.619778,3.6968297 c 0.06464,0.38542 0.398165,0.66546 0.788927,0.66546 l 2.97767,0 c -8.91e-4,-0.014 0.0011,-0.0192 0.0011,-0.0314 l 0,-2.68426 c 0,-0.1742497 0.138623,-0.3174297 0.312872,-0.3174297 l 1.434528,0 c 0.174398,0 0.31671,0.1432 0.31671,0.3174297 l 0,2.7157 0.683505,0 c 0.3908121,0 0.7244071,-0.28004 0.7889521,-0.66546 l 0.619753,-3.6978397 c 0.05412,-0.32216 -0.03714,-0.65058 -0.249218,-0.8989 l -3.4141121,-4.00196 z m -1.41992,7.5020997 c 0,0.1744 -0.14142,0.31582 -0.31567,0.31582 l -1.095833,0 c -0.174398,0 -0.31567,-0.14142 -0.31567,-0.31582 l 0,-1.0958297 c 0,-0.17425 0.141297,-0.31567 0.31567,-0.31567 l 1.095833,0 c 0.17425,0 0.31567,0.14142 0.31567,0.31567 l 0,1.0958297 z"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 14 14" id="libre-layout-blocks"><path d="M 1,6.249111 H 6.25031 V 1 H 1 V 6.249111 z M 7.74969,1 V 6.249111 H 13 V 1 H 7.74969 z m 0,12 H 13 V 7.750444 H 7.74969 V 13 z M 1,13 H 6.25031 V 7.750444 H 1 V 13 z"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 14 14" id="libre-layout-list"><path d="m 1,9.6262715 12,0 0,2.6837195 -12,0 z m 0,-3.909844 12,0 0,2.68288 -12,0 z m 0,-4.026418 12,0 0,2.684558 -12,0 z"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 14 14" id="libre-level-up"><path d="m 11.311289,5.042644 q -0.15352,0.315565 -0.49467,0.315565 H 9.1790888 v 7.36887 q 0,0.119403 -0.0768,0.196162 Q 9.0255688,13 8.9061688,13 h -6.00426 q -0.17911,0 -0.24734,-0.153518 -0.0682,-0.170576 0.0341,-0.298508 l 1.3646,-1.637526 q 0.0768,-0.09382 0.21322,-0.09382 h 2.72921 V 5.358206 h -1.63752 q -0.34116,0 -0.49467,-0.315565 -0.14499,-0.315565 0.0768,-0.579958 L 7.6695188,1.18763 Q 7.8230088,1 8.0874088,1 q 0.26439,0 0.41791,0.187633 l 2.7292102,3.275053 q 0.23028,0.272922 0.0768,0.579958 z"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 14 14" id="libre-paste"><path d="M 10.54781,10.879379 H 7.65552 v -0.875214 h 2.89229 v 0.875214 z M 10.54682,9.26267 H 7.65549 V 8.387456 h 2.89133 V 9.26267 z M 10.92021,4.947971 H 5.3745 V 13 h 7.36581 V 6.766466 l -1.8201,-1.818495 z m 0.65316,6.885087 H 6.54147 V 6.114912 H 10.045 v 1.322535 h 1.52837 v 4.395611 z M 4.33655,10.816845 H 2.41204 V 3.085903 H 4.17219 L 4.8991,3.815253 H 7.32779 L 8.06442,3.085903 H 9.7346 v 0.928573 h 1.18151 v -2.09065 h -1.662 c -0.26526,0 -0.51973,-0.104972 -0.70786,-0.291962 L 7.91124,1 H 4.26455 L 3.62957,1.631806 C 3.44145,1.818826 3.187,1.923796 2.92172,1.923796 H 1.25969 V 11.99835 h 3.07686 v -1.181505 z"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 14 14" id="libre-question-circle"><path d="M 6.9198484,1.0005452 C 3.6064257,1.0448929 0.95652234,3.7671873 1.0006091,7.0807404 1.0449568,10.392859 3.7669904,13.043545 7.0802826,12.999458 10.393053,12.954849 13.043478,10.232555 12.999391,6.9192627 12.955044,3.6068835 10.23288,0.95632795 6.9198484,1.0005452 Z m -0.017739,9.6516168 -0.03313,-5.22e-4 C 6.35872,10.63651 5.9989822,10.260598 6.0134604,9.7579041 6.0276777,9.2638191 6.3961547,8.905125 6.8895876,8.905125 l 0.029609,5.218e-4 C 7.443673,8.9211688 7.7993673,9.2932971 7.7846282,9.8104691 7.7700192,10.305989 7.4072818,10.652162 6.9021097,10.652162 Z M 9.0484058,6.3923081 C 8.9284063,6.5627858 8.6645377,6.7744807 8.3320606,7.0335232 L 7.9659315,7.2863049 C 7.7649323,7.4425652 7.6436284,7.5895646 7.5981068,7.7342163 7.5622373,7.8480854 7.5446287,7.8782157 7.5414983,8.1098671 l -5.217e-4,0.058826 -1.3979949,0 0.00404,-0.1183039 C 6.164112,7.5641299 6.176112,7.2780875 6.377633,7.0417405 6.6938057,6.6705245 7.391238,6.2214392 7.4208466,6.2023958 7.5207592,6.1271352 7.6050198,6.0414399 7.6677587,5.949875 7.8144973,5.7475714 7.8794536,5.5883111 7.8794536,5.4317899 7.8794536,5.2146168 7.815019,5.013748 7.6875847,4.8349225 7.5651069,4.6623579 7.3324121,4.574967 6.9958916,4.574967 6.6621102,4.574967 6.4335893,4.6808796 6.2968941,4.8981832 6.156286,5.1216171 6.0851993,5.3562684 6.0851993,5.5960067 l 0,0.059608 -1.4414295,0 0.00261,-0.062217 C 4.6835522,4.7104882 4.9986815,4.0747514 5.5826359,3.7037962 5.9495476,3.4675797 6.4060677,3.347841 6.9387614,3.347841 c 0.6973018,0 1.2859518,0.1694342 1.7493849,0.5036069 0.4695635,0.3386074 0.7077365,0.845736 0.7077365,1.5072988 0,0.3700421 -0.1168691,0.7176496 -0.347477,1.0335614 z"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 14 14" id="libre-refresh"><path d="m 12.80469,8.25 q 0,0.03906 -0.008,0.05469 -0.5,2.093751 -2.09376,3.394532 Q 9.10937,13 6.96875,13 5.82812,13 4.76172,12.570312 3.69531,12.140625 2.85938,11.34375 L 1.851562,12.351563 Q 1.703125,12.5 1.5,12.5 1.296875,12.5 1.148437,12.351563 1,12.203125 1,12 V 8.5 Q 1,8.296875 1.148437,8.148438 1.296875,8 1.5,8 H 5 Q 5.20312,8 5.35156,8.148438 5.5,8.296875 5.5,8.5 5.5,8.703125 5.35156,8.851562 L 4.28125,9.921875 Q 4.83594,10.4375 5.53906,10.71875 6.24219,11 7,11 8.04687,11 8.95313,10.492187 9.85937,9.984375 10.40625,9.09375 10.49215,8.960938 10.82031,8.179688 10.88281,8 11.05469,8 h 1.5 q 0.10156,0 0.17578,0.07422 0.0742,0.07422 0.0742,0.175781 z M 13,2 V 5.5 Q 13,5.703125 12.85156,5.851562 12.70313,6 12.5,6 H 9 Q 8.79687,6 8.64844,5.851562 8.5,5.703125 8.5,5.5 8.5,5.296875 8.64844,5.148438 L 9.72656,4.070312 Q 8.57031,3 7,3 5.95313,3 5.04688,3.507813 4.14063,4.015625 3.59375,4.90625 3.50785,5.039062 3.17969,5.820312 3.11719,6 2.94531,6 H 1.390625 Q 1.289062,6 1.214844,5.92578 1.140624,5.85156 1.140624,5.749999 V 5.695309 Q 1.648438,3.601562 3.25,2.300781 4.85156,1 7,1 8.14063,1 9.21875,1.433594 10.29687,1.867187 11.13281,2.65625 L 12.14844,1.648437 Q 12.29688,1.5 12.5,1.5 12.70313,1.5 12.85156,1.648437 13,1.796875 13,2 z"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 14 14" id="libre-wysiwyg-resize-full"><path d="M 12.851703,1.14844 C 12.752843,1.04944 12.635563,1 12.500164,1 L 9.0001119,1 c -0.135399,0 -0.252483,0.0495 -0.35154,0.14844 -0.09886,0.099 -0.148344,0.21614 -0.148344,0.35154 0,0.1354 0.04948,0.25268 0.148344,0.35154 l 1.124908,1.125 -2.593779,2.59378 c -0.05207,0.0522 -0.07815,0.112 -0.07815,0.1797 0,0.0677 0.02608,0.12763 0.07815,0.1797 l 0.890644,0.89065 c 0.05207,0.0521 0.111905,0.0781 0.179701,0.0781 0.0677,0 0.127536,-0.026 0.179605,-0.0781 l 2.5938751,-2.59378 1.124811,1.12491 c 0.09906,0.099 0.216332,0.14853 0.351731,0.14853 0.135399,0 0.252579,-0.0496 0.351539,-0.14853 0.09887,-0.0989 0.148345,-0.21614 0.148345,-0.35154 l 0,-3.50006 c 9.6e-5,-0.13549 -0.0491,-0.25248 -0.148249,-0.35144 z M 5.9298469,7.17956 c -0.05207,-0.0521 -0.112001,-0.0781 -0.179701,-0.0781 -0.0677,0 -0.127632,0.026 -0.179701,0.0781 l -2.593779,2.59378 -1.125003,-1.1251 c -0.09896,-0.0988 -0.216044,-0.14835 -0.351539,-0.14835 -0.135495,0 -0.252675,0.0496 -0.351635,0.14835 -0.09896,0.099 -0.148441,0.21633 -0.148441,0.35173 l 0,3.50005 c 0,0.1354 0.04948,0.25258 0.148441,0.35154 C 1.2475489,12.95046 1.3647249,13 1.5001239,13 l 3.500052,0 c 0.135399,0 0.252579,-0.0496 0.351539,-0.14844 0.09896,-0.099 0.148441,-0.21614 0.148441,-0.35154 0,-0.1354 -0.04948,-0.25268 -0.148441,-0.35173 L 4.2267119,11.02348 6.8204909,8.4296 c 0.05207,-0.0521 0.07805,-0.1119 0.07805,-0.1797 0,-0.0677 -0.02608,-0.12753 -0.07805,-0.1797 L 5.9298469,7.17956 Z"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 14 14" id="libre-wysiwyg-resize-small"><path d="m 6.491328,7.000195 -3.560223,0 c -0.137727,0 -0.256921,0.0503 -0.357583,0.15109 -0.100662,0.10057 -0.150992,0.21986 -0.150992,0.35759 0,0.13772 0.05033,0.25692 0.150992,0.35758 l 1.144344,1.14424 -2.63837,2.63847 c -0.05306,0.053 -0.0795,0.11393 -0.0795,0.18269 0,0.069 0.02643,0.12993 0.0795,0.18289 l 0.905858,0.90576 c 0.05306,0.053 0.113927,0.0794 0.18279,0.0794 0.06886,0 0.129827,-0.0264 0.182791,-0.0794 l 2.638369,-2.63837 1.144344,1.14435 c 0.100661,0.10056 0.219856,0.15099 0.357582,0.15099 0.137825,0 0.257019,-0.0504 0.357681,-0.15099 0.100662,-0.10057 0.150992,-0.21986 0.150992,-0.35759 l 0,-3.56022 c 0,-0.13773 -0.05033,-0.25702 -0.150894,-0.35748 -0.100662,-0.10067 -0.219856,-0.151 -0.357681,-0.151 z m 6.508673,-4.83185 c 0,-0.0689 -0.02653,-0.12973 -0.07959,-0.18279 l -0.905955,-0.90596 c -0.05296,-0.0531 -0.113829,-0.0795 -0.182693,-0.0795 -0.06896,0 -0.129826,0.0265 -0.18279,0.0795 L 9.010408,3.717965 7.86626,2.573625 c -0.100564,-0.10067 -0.219954,-0.151 -0.357681,-0.151 -0.137727,0 -0.256921,0.0503 -0.357583,0.151 -0.100661,0.10066 -0.150992,0.21985 -0.150992,0.35758 l 0,3.56022 c 0,0.13783 0.05033,0.25702 0.150992,0.35768 0.100662,0.10066 0.219856,0.151 0.357583,0.151 l 3.560223,0 c 0.137727,0 0.257117,-0.0503 0.357681,-0.151 0.100662,-0.10066 0.15109,-0.21985 0.15109,-0.35768 0,-0.13772 -0.05043,-0.25692 -0.15109,-0.35758 l -1.144344,-1.14434 2.638565,-2.63837 c 0.05277,-0.053 0.0793,-0.11393 0.0793,-0.18279 z"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 14 14" id="libre-wysiwyg-search"><path d="m 9.409996,2.4414063 c -1.92114,-1.92163005 -5.047381,-1.92163005 -6.968813,0 -1.921577,1.9211399 -1.921577,5.0475299 0,6.96881 1.855519,1.8554897 4.834556,1.9186397 6.767084,0.19043 l 0.390671,0.39082 c -0.09728,0.2489997 -0.04628,0.5424197 0.154807,0.7435297 l 2.061471,2.06145 c 0.270991,0.27116 0.710564,0.27116 0.98141,0 0.271165,-0.27085 0.271165,-0.71031 0,-0.98159 L 10.735329,9.7538263 c -0.201262,-0.20141 -0.494797,-0.25238 -0.743827,-0.15496 l -0.39067,-0.39081 c 1.728528,-1.93241 1.6648,-4.91145 -0.190836,-6.76665 z m -6.379938,6.38008 c -1.596673,-1.59649 -1.596673,-4.19476 0,-5.7914401 1.596528,-1.59667 4.19471,-1.59667 5.791354,0 1.596674,1.59668 1.596674,4.1949201 0,5.7914401 -1.596644,1.5964997 -4.194826,1.5964997 -5.791354,0 z"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 14 14" id="libre-server"><path d="m 1,11.2 12,0 0,-2.4 -12,0 0,2.4 z m 1.2,-1.8 1.2,0 0,1.2 -1.2,0 0,-1.2 z M 1,2.8 l 0,2.4 12,0 0,-2.4 -12,0 z m 2.4,1.8 -1.2,0 0,-1.2 1.2,0 0,1.2 z M 1,8.2 l 12,0 0,-2.4 -12,0 0,2.4 z m 1.2,-1.8 1.2,0 0,1.2 -1.2,0 0,-1.2 z"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 14 14" id="libre-sort-asc"><path d="m 11.363635,5.363637 c 0,0.1477267 -0.05398,0.2755673 -0.16193,0.383522 -0.107953,0.1079547 -0.235793,0.161932 -0.38352,0.161932 l -7.63637,0 c -0.1477267,0 -0.2755667,-0.053977 -0.38352,-0.161932 -0.1079533,-0.1079547 -0.16193,-0.2357953 -0.16193,-0.383522 0,-0.147728 0.053977,-0.2755693 0.16193,-0.383524 L 6.616475,1.161932 C 6.724435,1.0539773 6.8522783,1 7.000005,1 c 0.1477267,0 0.2755667,0.053977 0.38352,0.161932 l 3.81818,3.818181 c 0.107953,0.1079547 0.16193,0.235796 0.16193,0.383524 z"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 14 14" id="libre-sort-desc"><path d="m 11.363635,8.636363 c 0,0.147728 -0.05398,0.275569 -0.16193,0.383523 l -3.81818,3.818182 C 7.2755717,12.946023 7.1477317,13 7.000005,13 6.8522783,13 6.724435,12.946023 6.616475,12.838068 L 2.798295,9.019886 C 2.6903417,8.911932 2.636365,8.784091 2.636365,8.636363 c 0,-0.1477267 0.053977,-0.2755673 0.16193,-0.383522 0.1079533,-0.1079547 0.2357933,-0.161932 0.38352,-0.161932 l 7.63637,0 c 0.147727,0 0.275567,0.053977 0.38352,0.161932 0.107953,0.1079547 0.16193,0.2357953 0.16193,0.383522 z"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 14 14" id="libre-sort"><path d="m 11.363635,8.636363 q 0,0.221592 -0.16193,0.383523 l -3.81818,3.818182 Q 7.221595,13 7.000005,13 6.778415,13 6.616475,12.838068 L 2.798295,9.019886 q -0.16193,-0.161931 -0.16193,-0.383523 0,-0.22159 0.16193,-0.383522 0.16193,-0.161932 0.38352,-0.161932 h 7.63637 q 0.22159,0 0.38352,0.161932 0.16193,0.161932 0.16193,0.383522 z m 0,-3.272726 q 0,0.22159 -0.16193,0.383522 -0.16193,0.161932 -0.38352,0.161932 h -7.63637 q -0.22159,0 -0.38352,-0.161932 -0.16193,-0.161932 -0.16193,-0.383522 0,-0.221592 0.16193,-0.383524 L 6.616475,1.161932 Q 6.778415,1 7.000005,1 q 0.22159,0 0.38352,0.161932 l 3.81818,3.818181 q 0.16193,0.161932 0.16193,0.383524 z"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 14 14" id="libre-wysiwyg-text-cursor"><path d="m 7.430568,2.63427 0,5.65744 1.363008,0 0,0.86113 -1.363008,0 0,2.21289 c 0,0.75143 1.209266,0.77313 1.34722,0.77313 l 0,0.86114 C 8.54907,13 7.961488,12.9724 7.448021,12.71726 7.274071,12.63076 7.124348,12.52551 7,12.40421 6.875709,12.52551 6.725986,12.63086 6.552037,12.71726 6.038512,12.97244 5.450987,13 5.222212,13 l 0,-0.86114 c 0.137896,0 1.347219,-0.0217 1.347219,-0.77313 l 0,-2.21289 -1.363007,0 0,-0.86113 1.363007,0 0,-5.65744 c 0,-0.75143 -1.209323,-0.77313 -1.347219,-0.77313 L 5.222212,1 C 5.450987,1 6.038512,1.02756 6.551979,1.282683 6.725986,1.369143 6.875709,1.474429 7,1.59579 7.124291,1.474486 7.274014,1.369141 7.448021,1.282683 7.961488,1.027556 8.549013,1 8.777731,1 l 0,0.86114 c -0.137897,0 -1.347163,0.0217 -1.347163,0.77313 z"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 14 14" id="libre-wysiwyg-trash"><path d="m 5.4999377,5.7501979 v 4.5001871 q 0,0.109505 -0.070503,0.179508 -0.070503,0.07 -0.1795074,0.0705 H 4.7499064 q -0.1095045,0 -0.1795075,-0.0705 -0.070003,-0.0705 -0.070503,-0.179508 V 5.7501979 q 0,-0.1095045 0.070503,-0.1795075 0.070503,-0.070003 0.1795075,-0.070503 h 0.5000209 q 0.1095045,0 0.1795074,0.070503 0.070003,0.070503 0.070503,0.1795075 z m 2.0000833,0 v 4.5001871 q 0,0.109505 -0.070503,0.179508 -0.070503,0.07 -0.1795075,0.0705 H 6.7499898 q -0.1095046,0 -0.1795075,-0.0705 -0.070003,-0.0705 -0.070503,-0.179508 V 5.7501979 q 0,-0.1095045 0.070503,-0.1795075 0.070503,-0.070003 0.1795075,-0.070503 h 0.5000208 q 0.1095046,0 0.1795075,0.070503 0.070003,0.070503 0.070503,0.1795075 z m 2.0000833,0 v 4.5001871 q 0,0.109505 -0.070503,0.179508 -0.070503,0.07 -0.1795075,0.0705 H 8.7500731 q -0.1095046,0 -0.1795075,-0.0705 -0.070003,-0.0705 -0.070503,-0.179508 V 5.7501979 q 0,-0.1095045 0.070503,-0.1795075 0.070503,-0.070003 0.1795075,-0.070503 H 9.250094 q 0.1095046,0 0.1795075,0.070503 0.070003,0.070503 0.070503,0.1795075 z M 10.500146,11.406934 V 4.000625 H 3.4998543 v 7.406309 q 0,0.172007 0.054502,0.316513 0.054502,0.144506 0.1135047,0.211009 0.059003,0.0665 0.082004,0.0665 h 6.500271 q 0.0235,0 0.082,-0.0665 0.0585,-0.0665 0.113504,-0.211009 0.055,-0.144506 0.0545,-0.316513 z M 5.2499273,3.0000833 H 8.7500731 L 8.3750575,2.0860453 Q 8.3205552,2.0155423 8.2420519,2.0000417 H 5.7654487 q -0.078003,0.015501 -0.1330055,0.086004 z m 7.2503017,0.2500105 v 0.5000208 q 0,0.1095046 -0.0705,0.1795075 -0.0705,0.070003 -0.179507,0.070503 h -0.750031 v 7.4063089 q 0,0.648527 -0.367016,1.121046 Q 10.766157,13 10.250136,13 H 3.7498648 Q 3.2343433,13 2.866828,12.542981 2.4993126,12.085962 2.4998127,11.437435 V 3.999625 H 1.7497814 q -0.1095046,0 -0.1795075,-0.070503 Q 1.500271,3.8586191 1.499771,3.7496146 V 3.2495937 q 0,-0.1095045 0.070503,-0.1795074 0.070503,-0.070003 0.1795075,-0.070503 H 4.163882 L 4.7109048,1.695029 Q 4.8279097,1.4060169 5.1329224,1.2030085 5.4379351,1 5.7499481,1 H 8.2500523 Q 8.5625653,1 8.867078,1.2030085 9.1715907,1.4060169 9.2890956,1.695029 l 0.5470227,1.3045543 h 2.4141007 q 0.109504,0 0.179507,0.070503 0.07,0.070503 0.0705,0.1795074 z"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 14 14" id="libre-wysiwyg-upload"><path d="m 5.0586355,4.60044 -1.652941,0 L 7.0000435,1 l 3.5942325,3.60044 -1.6529415,0 0,4.37796 -3.882699,0 0,-4.37796 z m -2.987854,5.27805 0,3.12151 9.8584365,0 0,-3.12151 -9.8584365,0 z m 1.603136,1.99765 -0.436893,0 0,-0.87379 0.436893,0 0,0.87379 z m 0.793689,0 -0.436893,0 0,-0.87379 0.436893,0 0,0.87379 z m 0.771845,0 -0.436893,0 0,-0.87379 0.436893,0 0,0.87379 z m 5.1068145,0.0728 c -0.281503,0 -0.5097075,-0.2282 -0.5097075,-0.50971 0,-0.2815 0.2282045,-0.50971 0.5097075,-0.50971 0.281505,0 0.50971,0.22821 0.50971,0.50971 0,0.28151 -0.228205,0.50971 -0.50971,0.50971 z"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 14 14" id="libre-view"><path d="m 7.014388,10.499265 c -2.425543,0 -4.630136,-1.66855 -6.014388,-3.69754 1.396777,-1.95793 3.601049,-3.30099 6.014388,-3.30099 2.418408,0 4.630049,1.3197 5.985612,3.28855 -1.285311,2.14209 -3.485592,3.70998 -5.985612,3.70998 z M 2.26999,6.818615 c 1.158728,1.4312 2.869748,2.66106 4.744427,2.66106 2.553641,0 4.206583,-1.91359 4.747952,-2.64993 -1.151651,-1.35496 -2.846155,-2.30948 -4.747952,-2.30948 -2.470339,0 -4.153922,1.62594 -4.744427,2.29835 z m 4.797292,-1.83906 c -1.115884,0 -2.020428,0.90457 -2.020428,2.02043 0,1.11585 0.904573,2.02043 2.020428,2.02043 1.115854,0 2.020456,-0.90458 2.020456,-2.02043 0,-1.11586 -0.904602,-2.02043 -2.020456,-2.02043 z m -0.0019,2.01976 c -0.285203,0.28517 -0.747553,0.28517 -1.032757,0 -0.285204,-0.28521 -0.285204,-0.74758 0,-1.03276 0.285204,-0.2852 0.747554,-0.2852 1.032757,0 0.285204,0.28518 0.285204,0.74755 0,1.03276 z"/></svg>
/*!
 * elFinder-Material-Theme (Gray) v2.1.9 (https://github.com/RobiNN1/elFinder-Material-Theme)
 * Copyright 2016-2019 Róbert Kelčák {RobiNN}
 * Licensed under MIT (https://github.com/RobiNN1/elFinder-Material-Theme/blob/master/LICENSE)
 */
@import url("https://fonts.googleapis.com/css?family=Noto+Sans:400,400i,700,700i&subset=cyrillic,cyrillic-ext,devanagari,greek,greek-ext,latin-ext,vietnamese");
.elfinder {
  color: #546e7a;
  font-family: "Noto Sans", sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}
.elfinder.ui-widget.ui-widget-content {
  font-family: "Noto Sans", sans-serif;
  -webkit-box-shadow: 0 1px 8px rgba(0, 0, 0, 0.6);
  box-shadow: 0 1px 8px rgba(0, 0, 0, 0.6);
  -webkit-border-radius: 0;
  border-radius: 0;
  border: 0;
}
.elfinder * {
  outline: 0 !important;
}
/**
 * Loading
 */
.elfinder-info-spinner,
.elfinder-navbar-spinner,
.elfinder-button-icon-spinner {
  background: url("../images/loading.svg") center center no-repeat !important;
  width: 16px;
  height: 16px;
}
/**
 * Progress Bar
 */
@-webkit-keyframes progress-animation {
  from {
    background-position: 1rem 0;
  }
  to {
    background-position: 0 0;
  }
}
@keyframes progress-animation {
  from {
    background-position: 1rem 0;
  }
  to {
    background-position: 0 0;
  }
}
.elfinder-notify-progressbar {
  border: 0;
}
.elfinder-notify-progress,
.elfinder-notify-progressbar {
  -webkit-border-radius: 0;
  border-radius: 0;
}
.elfinder-notify-progress,
.elfinder-resize-spinner {
  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: 1rem 1rem;
  background-size: 1rem 1rem;
  -webkit-animation: progress-animation 1s linear infinite;
  animation: progress-animation 1s linear infinite;
  background-color: #0275d8;
  height: 1rem;
}
/**
 * Toast Notification
 */
.elfinder .elfinder-toast > div {
  background-color: #323232 !important;
  color: #d6d6d6;
  -webkit-box-shadow: none;
  box-shadow: none;
  opacity: inherit;
  padding: 10px 60px;
}
.elfinder .elfinder-toast > div button.ui-button {
  color: #fff;
}
.elfinder .elfinder-toast > .toast-info button.ui-button {
  background-color: #3498db;
}
.elfinder .elfinder-toast > .toast-error button.ui-button {
  background-color: #f44336;
}
.elfinder .elfinder-toast > .toast-success button.ui-button {
  background-color: #4caf50;
}
.elfinder .elfinder-toast > .toast-warning button.ui-button {
  background-color: #ff9800;
}
.elfinder-toast-msg {
  font-family: "Noto Sans", sans-serif;
  font-size: 17px;
}
/**
 * For Ace Editor
 */
#ace_settingsmenu {
  font-family: "Noto Sans", sans-serif;
  -webkit-box-shadow: 0 1px 30px rgba(0, 0, 0, 0.6) !important;
  box-shadow: 0 1px 30px rgba(0, 0, 0, 0.6) !important;
  background-color: #1d2736 !important;
  color: #e6e6e6 !important;
}
#ace_settingsmenu,
#kbshortcutmenu {
  padding: 0;
}
.ace_optionsMenuEntry {
  padding: 5px 10px;
}
.ace_optionsMenuEntry:hover {
  background-color: #111721;
}
.ace_optionsMenuEntry label {
  font-size: 13px;
}
#ace_settingsmenu input[type="text"],
#ace_settingsmenu select {
  margin: 1px 2px 2px;
  padding: 2px 5px;
  -webkit-border-radius: 3px;
  border-radius: 3px;
  border: 0;
  background: rgba(9, 53, 121, 0.75);
  color: white !important;
}
/**
 * Icons
 */
@font-face {
  font-family: material;
  src: url("../icons/material.eot?91804974");
  src: url("../icons/material.eot?91804974#iefix") format("embedded-opentype"), url("../icons/material.woff2?91804974") format("woff2"), url("../icons/material.woff?91804974") format("woff"), url("../icons/material.ttf?91804974") format("truetype"), url("../icons/material.svg?91804974#material") format("svg");
  font-weight: normal;
  font-style: normal;
}
@media screen and (-webkit-min-device-pixel-ratio: 0) {
  @font-face {
    font-family: material;
    src: url("../icons/material.svg?91804974#material") format("svg");
  }
}
.elfinder .ui-icon,
.elfinder-button-icon,
.ui-widget-header .ui-icon,
.ui-widget-content .ui-icon {
  font: normal normal normal 14px/1 material;
  background-image: inherit;
  text-indent: inherit;
}
.elfinder .ui-button-icon-only .ui-icon {
  font: normal normal normal 14px/1 material;
  background-image: inherit !important;
  text-indent: 0;
  font-size: 16px;
}
.elfinder-button-icon {
  background: inherit;
}
.elfinder-button-icon-home:before {
  content: '\e800';
}
.elfinder-button-icon-back:before {
  content: '\e801';
}
.elfinder-button-icon-forward:before {
  content: '\e802';
}
.elfinder-button-icon-up:before {
  content: '\e803';
}
.elfinder-button-icon-dir:before {
  content: '\e804';
}
.elfinder-button-icon-opendir:before {
  content: '\e805';
}
.elfinder-button-icon-reload:before {
  content: '\e806';
}
.elfinder-button-icon-open:before {
  content: '\e807';
}
.elfinder-button-icon-mkdir:before {
  content: '\e808';
}
.elfinder-button-icon-mkfile:before {
  content: '\e809';
}
.elfinder-button-icon-rm:before {
  content: '\e80a';
}
.elfinder-button-icon-trash:before {
  content: '\e80b';
}
.elfinder-button-icon-restore:before {
  content: '\e80c';
}
.elfinder-button-icon-copy:before {
  content: '\e80d';
}
.elfinder-button-icon-cut:before {
  content: '\e80e';
}
.elfinder-button-icon-paste:before {
  content: '\e80f';
}
.elfinder-button-icon-getfile:before {
  content: '\e810';
}
.elfinder-button-icon-duplicate:before {
  content: '\e811';
}
.elfinder-button-icon-rename:before {
  content: '\e812';
}
.elfinder-button-icon-edit:before {
  content: '\e813';
}
.elfinder-button-icon-quicklook:before {
  content: '\e814';
}
.elfinder-button-icon-upload:before {
  content: '\e815';
}
.elfinder-button-icon-download:before {
  content: '\e816';
}
.elfinder-button-icon-info:before {
  content: '\e817';
}
.elfinder-button-icon-extract:before {
  content: '\e818';
}
.elfinder-button-icon-archive:before {
  content: '\e819';
}
.elfinder-button-icon-view:before {
  content: '\e81a';
}
.elfinder-button-icon-view-list:before {
  content: '\e81b';
}
.elfinder-button-icon-help:before {
  content: '\e81c';
}
.elfinder-button-icon-resize:before {
  content: '\e81d';
}
.elfinder-button-icon-link:before {
  content: '\e81e';
}
.elfinder-button-icon-search:before {
  content: '\e81f';
}
.elfinder-button-icon-sort:before {
  content: '\e820';
}
.elfinder-button-icon-rotate-r:before {
  content: '\e821';
}
.elfinder-button-icon-rotate-l:before {
  content: '\e822';
}
.elfinder-button-icon-netmount:before {
  content: '\e823';
}
.elfinder-button-icon-netunmount:before {
  content: '\e824';
}
.elfinder-button-icon-places:before {
  content: '\e825';
}
.elfinder-button-icon-chmod:before {
  content: '\e826';
}
.elfinder-button-icon-accept:before {
  content: '\e827';
}
.elfinder-button-icon-menu:before {
  content: '\e828';
}
.elfinder-button-icon-colwidth:before {
  content: '\e829';
}
.elfinder-button-icon-fullscreen:before {
  content: '\e82a';
}
.elfinder-button-icon-unfullscreen:before {
  content: '\e82b';
}
.elfinder-button-icon-empty:before {
  content: '\e82c';
}
.elfinder-button-icon-undo:before {
  content: '\e82d';
}
.elfinder-button-icon-redo:before {
  content: '\e82e';
}
.elfinder-button-icon-preference:before {
  content: '\e82f';
}
.elfinder-button-icon-mkdirin:before {
  content: '\e830';
}
.elfinder-button-icon-selectall:before {
  content: '\e831';
}
.elfinder-button-icon-selectnone:before {
  content: '\e832';
}
.elfinder-button-icon-selectinvert:before {
  content: '\e833';
}
.elfinder-button-icon-logout:before {
  content: '\e85a';
}
.elfinder-button-icon-opennew:before {
  content: '\e85b';
}
.elfinder-button-icon-hide:before {
  content: '\e85d';
}
.elfinder-button-search .ui-icon.ui-icon-search {
  font-size: 17px;
}
.elfinder-button-search .ui-icon:hover {
  opacity: 1;
}
.elfinder-navbar-icon {
  font: normal normal normal 16px/1 material;
  background-image: inherit !important;
}
.elfinder-navbar-icon:before {
  content: '\e804';
}
.elfinder-droppable-active .elfinder-navbar-icon:before,
.elfinder .ui-state-active .elfinder-navbar-icon:before,
.elfinder .ui-state-hover .elfinder-navbar-icon:before {
  content: '\e805';
}
.elfinder-navbar-root-local .elfinder-navbar-icon:before {
  content: '\e83d' !important;
}
.elfinder-navbar-root-ftp .elfinder-navbar-icon:before {
  content: '\e823' !important;
}
.elfinder-navbar-root-sql .elfinder-navbar-icon:before {
  content: '\e83e' !important;
}
.elfinder-navbar-root-dropbox .elfinder-navbar-icon:before {
  content: '\e83f' !important;
}
.elfinder-navbar-root-googledrive .elfinder-navbar-icon:before {
  content: '\e840' !important;
}
.elfinder-navbar-root-onedrive .elfinder-navbar-icon:before {
  content: '\e841' !important;
}
.elfinder-navbar-root-box .elfinder-navbar-icon:before {
  content: '\e842' !important;
}
.elfinder-navbar-root-trash .elfinder-navbar-icon:before {
  content: '\e80b' !important;
}
.elfinder-navbar-root-zip .elfinder-navbar-icon:before {
  content: '\e85c' !important;
}
.elfinder-navbar-root-network .elfinder-navbar-icon:before {
  content: '\e823' !important;
}
.elfinder-places .elfinder-navbar-root .elfinder-navbar-icon:before {
  content: '\e825' !important;
}
.elfinder-navbar-arrow {
  background-image: inherit !important;
  font: normal normal normal 14px/1 material;
  font-size: 10px;
  padding-top: 3px;
  padding-left: 2px;
  color: #a9a9a9;
}
.elfinder .ui-state-active .elfinder-navbar-arrow {
  color: #fff;
}
.elfinder-ltr .elfinder-navbar-collapsed .elfinder-navbar-arrow:before {
  content: '\e857';
}
.elfinder-rtl .elfinder-navbar-collapsed .elfinder-navbar-arrow:before {
  content: '\e858';
}
.elfinder-ltr .elfinder-navbar-expanded .elfinder-navbar-arrow:before,
.elfinder-rtl .elfinder-navbar-expanded .elfinder-navbar-arrow:before {
  content: '\e851';
}
div.elfinder-cwd-wrapper-list tr.ui-state-default td span.ui-icon {
  font-size: 8px;
  margin-top: 5px;
  margin-right: 5px;
}
div.elfinder-cwd-wrapper-list .ui-icon-grip-dotted-vertical {
  margin: 2px;
}
.elfinder-cwd-view-list .elfinder-navbar-root-local td .elfinder-cwd-icon,
.elfinder-navbar-root-local .elfinder-cwd-icon,
.elfinder-cwd-view-list .elfinder-navbar-root-ftp td .elfinder-cwd-icon,
.elfinder-navbar-root-ftp .elfinder-cwd-icon,
.elfinder-cwd-view-list .elfinder-navbar-root-sql td .elfinder-cwd-icon,
.elfinder-navbar-root-sql .elfinder-cwd-icon,
.elfinder-cwd-view-list .elfinder-navbar-root-dropbox td .elfinder-cwd-icon,
.elfinder-navbar-root-dropbox .elfinder-cwd-icon,
.elfinder-cwd-view-list .elfinder-navbar-root-googledrive td .elfinder-cwd-icon,
.elfinder-navbar-root-googledrive .elfinder-cwd-icon,
.elfinder-cwd-view-list .elfinder-navbar-root-onedrive td .elfinder-cwd-icon,
.elfinder-navbar-root-onedrive .elfinder-cwd-icon,
.elfinder-cwd-view-list .elfinder-navbar-root-box td .elfinder-cwd-icon,
.elfinder-navbar-root-box .elfinder-cwd-icon,
.elfinder-cwd-view-list .elfinder-navbar-root-trash td .elfinder-cwd-icon,
.elfinder-navbar-root-trash .elfinder-cwd-icon,
.elfinder-cwd-view-list .elfinder-navbar-root-zip td .elfinder-cwd-icon,
.elfinder-navbar-root-zip .elfinder-cwd-icon,
.elfinder-cwd-view-list .elfinder-navbar-root-network td .elfinder-cwd-icon,
.elfinder-navbar-root-network .elfinder-cwd-icon {
  background-image: inherit;
}
.elfinder-cwd-view-list .elfinder-navbar-root-local td .elfinder-cwd-icon:before,
.elfinder-navbar-root-local .elfinder-cwd-icon:before,
.elfinder-cwd-view-list .elfinder-navbar-root-ftp td .elfinder-cwd-icon:before,
.elfinder-navbar-root-ftp .elfinder-cwd-icon:before,
.elfinder-cwd-view-list .elfinder-navbar-root-sql td .elfinder-cwd-icon:before,
.elfinder-navbar-root-sql .elfinder-cwd-icon:before,
.elfinder-cwd-view-list .elfinder-navbar-root-dropbox td .elfinder-cwd-icon:before,
.elfinder-navbar-root-dropbox .elfinder-cwd-icon:before,
.elfinder-cwd-view-list .elfinder-navbar-root-googledrive td .elfinder-cwd-icon:before,
.elfinder-navbar-root-googledrive .elfinder-cwd-icon:before,
.elfinder-cwd-view-list .elfinder-navbar-root-onedrive td .elfinder-cwd-icon:before,
.elfinder-navbar-root-onedrive .elfinder-cwd-icon:before,
.elfinder-cwd-view-list .elfinder-navbar-root-box td .elfinder-cwd-icon:before,
.elfinder-navbar-root-box .elfinder-cwd-icon:before,
.elfinder-cwd-view-list .elfinder-navbar-root-trash td .elfinder-cwd-icon:before,
.elfinder-navbar-root-trash .elfinder-cwd-icon:before,
.elfinder-cwd-view-list .elfinder-navbar-root-zip td .elfinder-cwd-icon:before,
.elfinder-navbar-root-zip .elfinder-cwd-icon:before,
.elfinder-cwd-view-list .elfinder-navbar-root-network td .elfinder-cwd-icon:before,
.elfinder-navbar-root-network .elfinder-cwd-icon:before {
  font-family: material;
  background-color: transparent;
  color: #525252;
  font-size: 55px;
  position: relative;
  top: -10px !important;
  padding: 0;
  display: contents !important;
}
.elfinder-cwd-view-list .elfinder-navbar-root-local td .elfinder-cwd-icon:before,
.elfinder-navbar-root-local .elfinder-cwd-icon:before {
  content: '\e83d';
}
.elfinder-cwd-view-list .elfinder-navbar-root-ftp td .elfinder-cwd-icon:before,
.elfinder-navbar-root-ftp .elfinder-cwd-icon:before {
  content: '\e823';
}
.elfinder-cwd-view-list .elfinder-navbar-root-sql td .elfinder-cwd-icon:before,
.elfinder-navbar-root-sql .elfinder-cwd-icon:before {
  content: '\e83e';
}
.elfinder-cwd-view-list .elfinder-navbar-roor-dropbox td .elfinder-cwd-icon:before,
.elfinder-navbar-roor-dropbox .elfinder-cwd-icon:before {
  content: '\e83f';
}
.elfinder-cwd-view-list .elfinder-navbar-roor-googledrive td .elfinder-cwd-icon:before,
.elfinder-navbar-roor-googledrive .elfinder-cwd-icon:before {
  content: '\e840';
}
.elfinder-cwd-view-list .elfinder-navbar-roor-onedrive td .elfinder-cwd-icon:before,
.elfinder-navbar-roor-onedrive .elfinder-cwd-icon:before {
  content: '\e841';
}
.elfinder-cwd-view-list .elfinder-navbar-roor-box td .elfinder-cwd-icon:before,
.elfinder-navbar-roor-box .elfinder-cwd-icon:before {
  content: '\e842';
}
.elfinder-cwd-view-list .elfinder-navbar-root-trash td .elfinder-cwd-icon:before,
.elfinder-navbar-root-trash .elfinder-cwd-icon:before {
  content: '\e80b';
}
.elfinder-cwd-view-list .elfinder-navbar-root-zip td .elfinder-cwd-icon:before,
.elfinder-navbar-root-zip .elfinder-cwd-icon:before {
  content: '\e85c';
}
.elfinder-cwd-view-list .elfinder-navbar-root-network td .elfinder-cwd-icon:before,
.elfinder-navbar-root-network .elfinder-cwd-icon:before {
  content: '\e823';
}
.elfinder-dialog-icon {
  font: normal normal normal 14px/1 material;
  background: inherit;
  color: #524949;
  font-size: 37px;
}
.elfinder-dialog-icon:before {
  content: '\e843';
}
.elfinder-dialog-icon-mkdir:before {
  content: '\e808';
}
.elfinder-dialog-icon-mkfile:before {
  content: '\e809';
}
.elfinder-dialog-icon-copy:before {
  content: '\e80d';
}
.elfinder-dialog-icon-prepare:before,
.elfinder-dialog-icon-move:before {
  content: '\e844';
}
.elfinder-dialog-icon-upload:before,
.elfinder-dialog-icon-chunkmerge:before {
  content: '\e815';
}
.elfinder-dialog-icon-rm:before {
  content: '\e80a';
}
.elfinder-dialog-icon-open:before,
.elfinder-dialog-icon-readdir:before,
.elfinder-dialog-icon-file:before {
  content: '\e807';
}
.elfinder-dialog-icon-reload:before {
  content: '\e806';
}
.elfinder-dialog-icon-download:before {
  content: '\e816';
}
.elfinder-dialog-icon-save:before {
  content: '\e845';
}
.elfinder-dialog-icon-rename:before {
  content: '\e812';
}
.elfinder-dialog-icon-zipdl:before,
.elfinder-dialog-icon-archive:before {
  content: '\e819';
}
.elfinder-dialog-icon-extract:before {
  content: '\e818';
}
.elfinder-dialog-icon-search:before {
  content: '\e81f';
}
.elfinder-dialog-icon-loadimg:before {
  content: '\e846';
}
.elfinder-dialog-icon-url:before {
  content: '\e81e';
}
.elfinder-dialog-icon-resize:before {
  content: '\e81d';
}
.elfinder-dialog-icon-netmount:before {
  content: '\e823';
}
.elfinder-dialog-icon-netunmount:before {
  content: '\e824';
}
.elfinder-dialog-icon-chmod:before {
  content: '\e826';
}
.elfinder-dialog-icon-preupload:before,
.elfinder-dialog-icon-dim:before {
  content: '\e847';
}
.elfinder-contextmenu .elfinder-contextmenu-item span.elfinder-contextmenu-icon {
  font-size: 16px;
}
.elfinder-contextmenu .elfinder-contextmenu-item .elfinder-contextsubmenu-item .ui-icon {
  font-size: 15px;
}
.elfinder-contextmenu .elfinder-contextmenu-item .elfinder-button-icon-link:before {
  content: '\e837';
}
.elfinder .elfinder-contextmenu-extra-icon {
  margin-top: -6px;
}
.elfinder .elfinder-contextmenu-extra-icon a {
  padding: 5px;
  margin: -16px;
}
.elfinder-button-icon-link:before {
  content: '\e81e' !important;
}
.elfinder .elfinder-contextmenu-arrow {
  font: normal normal normal 14px/1 material;
  background-image: inherit;
  font-size: 10px !important;
  padding-top: 3px;
}
.elfinder .elfinder-contextmenu-arrow:before {
  content: '\e857';
}
.elfinder-contextmenu .ui-state-hover .elfinder-contextmenu-arrow {
  background-image: inherit;
}
.elfinder-quicklook .ui-resizable-se {
  background: inherit;
}
.elfinder-quicklook-navbar-icon {
  background: transparent;
  font: normal normal normal 14px/1 material;
  font-size: 32px;
  color: #fff;
}
.elfinder-quicklook-titlebar-icon {
  margin-top: -8px;
}
.elfinder-quicklook-titlebar-icon .ui-icon {
  border: 0;
  opacity: 0.8;
  font-size: 15px;
  padding: 1px;
}
.elfinder-quicklook-titlebar .ui-icon-circle-close,
.elfinder-quicklook .ui-icon-gripsmall-diagonal-se {
  color: #f1f1f1;
}
.elfinder-quicklook-navbar-icon-prev:before {
  content: '\e848';
}
.elfinder-quicklook-navbar-icon-next:before {
  content: '\e849';
}
.elfinder-quicklook-navbar-icon-fullscreen:before {
  content: '\e84a';
}
.elfinder-quicklook-navbar-icon-fullscreen-off:before {
  content: '\e84b';
}
.elfinder-quicklook-navbar-icon-close:before {
  content: '\e84c';
}
.elfinder .ui-button-icon {
  background-image: inherit;
}
.elfinder .ui-icon-search:before {
  content: '\e81f';
}
.elfinder .ui-icon-closethick:before,
.elfinder .ui-icon-close:before {
  content: '\e839';
}
.elfinder .ui-icon-circle-close:before {
  content: '\e84c';
}
.elfinder .ui-icon-gear:before {
  content: '\e82f';
}
.elfinder .ui-icon-gripsmall-diagonal-se:before {
  content: '\e838';
}
.elfinder .ui-icon-locked:before {
  content: '\e834';
}
.elfinder .ui-icon-unlocked:before {
  content: '\e836';
}
.elfinder .ui-icon-arrowrefresh-1-n:before {
  content: '\e821';
}
.elfinder .ui-icon-plusthick:before {
  content: '\e83a';
}
.elfinder .ui-icon-arrowreturnthick-1-s:before {
  content: '\e83b';
}
.elfinder .ui-icon-minusthick:before {
  content: '\e83c';
}
.elfinder .ui-icon-pin-s:before {
  content: '\e84d';
}
.elfinder .ui-icon-check:before {
  content: '\e84e';
}
.elfinder .ui-icon-arrowthick-1-s:before {
  content: '\e84f';
}
.elfinder .ui-icon-arrowthick-1-n:before {
  content: '\e850';
}
.elfinder .ui-icon-triangle-1-s:before {
  content: '\e851';
}
.elfinder .ui-icon-triangle-1-n:before {
  content: '\e852';
}
.elfinder .ui-icon-grip-dotted-vertical:before {
  content: '\e853';
}
.elfinder-lock,
.elfinder-perms,
.elfinder-symlink {
  background-image: inherit;
  font: normal normal normal 18px/1 material;
  color: #4d4d4d;
}
.elfinder-na .elfinder-perms:before {
  content: '\e824';
}
.elfinder-ro .elfinder-perms:before {
  content: '\e835';
}
.elfinder-wo .elfinder-perms:before {
  content: '\e854';
}
.elfinder-group .elfinder-perms:before {
  content: '\e800';
}
.elfinder-lock:before {
  content: '\e84d';
}
.elfinder-symlink:before {
  content: '\e837';
}
.elfinder .elfinder-toast > div {
  font: normal normal normal 14px/1 material;
}
.elfinder .elfinder-toast > div:before {
  font-size: 45px;
  position: absolute;
  left: 5px;
  top: 15px;
}
.elfinder .elfinder-toast > .toast-info,
.elfinder .elfinder-toast > .toast-error,
.elfinder .elfinder-toast > .toast-success,
.elfinder .elfinder-toast > .toast-warning {
  background-image: inherit !important;
}
.elfinder .elfinder-toast > .toast-info:before {
  content: '\e817';
  color: #3498db;
}
.elfinder .elfinder-toast > .toast-error:before {
  content: '\e855';
  color: #f44336;
}
.elfinder .elfinder-toast > .toast-success:before {
  content: '\e84e';
  color: #4caf50;
}
.elfinder .elfinder-toast > .toast-warning:before {
  content: '\e856';
  color: #ff9800;
}
.elfinder-drag-helper-icon-status {
  font: normal normal normal 14px/1 material;
  background: inherit;
}
.elfinder-drag-helper-icon-status:before {
  content: '\e824';
}
.elfinder-drag-helper-move .elfinder-drag-helper-icon-status {
  -webkit-transform: rotate(180deg);
  -ms-transform: rotate(180deg);
  transform: rotate(180deg);
}
.elfinder-drag-helper-move .elfinder-drag-helper-icon-status:before {
  content: '\e854';
}
.elfinder-drag-helper-plus .elfinder-drag-helper-icon-status {
  -webkit-transform: rotate(90deg);
  -ms-transform: rotate(90deg);
  transform: rotate(90deg);
}
.elfinder-drag-helper-plus .elfinder-drag-helper-icon-status:before {
  content: '\e84c';
}
/**
 * MIME Types
 */
.elfinder-cwd-view-list td .elfinder-cwd-icon {
  background-image: url("../images/icons-small.svg");
}
.elfinder-cwd-icon {
  background: url("../images/icons-big.svg") 0 0 no-repeat;
  -webkit-border-radius: 0;
  border-radius: 0;
}
.elfinder-cwd-icon:before {
  font-size: 10px;
  position: relative;
  top: 27px;
  left: inherit;
  padding: 1px;
  background-color: transparent;
}
.elfinder-cwd-icon-directory {
  background-position: 0 -50px;
}
.elfinder-cwd .elfinder-droppable-active .elfinder-cwd-icon {
  background-position: 0 -100px;
}
.elfinder-cwd-icon-group {
  background-position: 0 -150px;
}
.elfinder-cwd-icon-application {
  background-position: 0 -200px;
}
.elfinder-cwd-icon-rtf,
.elfinder-cwd-icon-rtfd,
.elfinder-cwd-icon-text {
  background-position: 0 -250px;
}
.elfinder-cwd-icon-image {
  background-position: 0 -300px;
}
.elfinder-cwd-icon-audio {
  background-position: 0 -350px;
}
.elfinder-cwd-icon-video,
.elfinder-cwd-icon-flash-video,
.elfinder-cwd-icon-dash-xml,
.elfinder-cwd-icon-vnd-apple-mpegurl,
.elfinder-cwd-icon-x-mpegurl {
  background-position: 0 -400px;
}
.elfinder-cwd-icon-plain,
.elfinder-cwd-icon-x-empty {
  background-position: 0 -450px;
}
.elfinder-cwd-icon-pdf {
  background-position: 0 -500px;
}
.elfinder-cwd-icon-vnd-ms-office {
  background-position: 0 -550px;
}
.elfinder-cwd-icon-x-msaccess {
  background-position: 0 -600px;
}
.elfinder-cwd-icon-x-msaccess:before {
  content: none !important;
}
.elfinder-cwd-icon-ms-excel,
.elfinder-cwd-icon-vnd-ms-excel,
.elfinder-cwd-icon-vnd-ms-excel-addin-macroEnabled-12,
.elfinder-cwd-icon-vnd-ms-excel-sheet-binary-macroEnabled-12,
.elfinder-cwd-icon-vnd-ms-excel-sheet-macroEnabled-12,
.elfinder-cwd-icon-vnd-ms-excel-template-macroEnabled-12 {
  background-position: 0 -650px;
}
.elfinder-cwd-icon-ms-excel:before,
.elfinder-cwd-icon-vnd-ms-excel:before,
.elfinder-cwd-icon-vnd-ms-excel-addin-macroEnabled-12:before,
.elfinder-cwd-icon-vnd-ms-excel-sheet-binary-macroEnabled-12:before,
.elfinder-cwd-icon-vnd-ms-excel-sheet-macroEnabled-12:before,
.elfinder-cwd-icon-vnd-ms-excel-template-macroEnabled-12:before {
  content: none !important;
}
.elfinder-cwd-icon-vnd-ms-powerpoint,
.elfinder-cwd-icon-vnd-ms-powerpoint-addin-macroEnabled-12,
.elfinder-cwd-icon-vnd-ms-powerpoint-presentation-macroEnabled-12,
.elfinder-cwd-icon-vnd-ms-powerpoint-slide-macroEnabled-12,
.elfinder-cwd-icon-vnd-ms-powerpoint-slideshow-macroEnabled-12,
.elfinder-cwd-icon-vnd-ms-powerpoint-template-macroEnabled-12 {
  background-position: 0 -700px;
}
.elfinder-cwd-icon-vnd-ms-powerpoint:before,
.elfinder-cwd-icon-vnd-ms-powerpoint-addin-macroEnabled-12:before,
.elfinder-cwd-icon-vnd-ms-powerpoint-presentation-macroEnabled-12:before,
.elfinder-cwd-icon-vnd-ms-powerpoint-slide-macroEnabled-12:before,
.elfinder-cwd-icon-vnd-ms-powerpoint-slideshow-macroEnabled-12:before,
.elfinder-cwd-icon-vnd-ms-powerpoint-template-macroEnabled-12:before {
  content: none !important;
}
.elfinder-cwd-icon-msword,
.elfinder-cwd-icon-vnd-ms-word,
.elfinder-cwd-icon-vnd-ms-word-document-macroEnabled-12,
.elfinder-cwd-icon-vnd-ms-word-template-macroEnabled-12 {
  background-position: 0 -750px;
}
.elfinder-cwd-icon-msword:before,
.elfinder-cwd-icon-vnd-ms-word:before,
.elfinder-cwd-icon-vnd-ms-word-document-macroEnabled-12:before,
.elfinder-cwd-icon-vnd-ms-word-template-macroEnabled-12:before {
  content: none !important;
}
.elfinder-cwd-icon-vnd-oasis-opendocument-base,
.elfinder-cwd-icon-vnd-oasis-opendocument-chart,
.elfinder-cwd-icon-vnd-oasis-opendocument-database,
.elfinder-cwd-icon-vnd-oasis-opendocument-formula,
.elfinder-cwd-icon-vnd-oasis-opendocument-graphics,
.elfinder-cwd-icon-vnd-oasis-opendocument-graphics-template,
.elfinder-cwd-icon-vnd-oasis-opendocument-image,
.elfinder-cwd-icon-vnd-openofficeorg-extension {
  background-position: 0 -800px;
}
.elfinder-cwd-icon-vnd-oasis-opendocument-spreadsheet,
.elfinder-cwd-icon-vnd-oasis-opendocument-spreadsheet-template,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-spreadsheetml-sheet,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-spreadsheetml-template {
  background-position: 0 -850px;
}
.elfinder-cwd-icon-vnd-oasis-opendocument-presentation,
.elfinder-cwd-icon-vnd-oasis-opendocument-presentation-template,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-presentation,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-slide,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-slideshow,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-template {
  background-position: 0 -900px;
}
.elfinder-cwd-icon-vnd-oasis-opendocument-text,
.elfinder-cwd-icon-vnd-oasis-opendocument-text-master,
.elfinder-cwd-icon-vnd-oasis-opendocument-text-template,
.elfinder-cwd-icon-vnd-oasis-opendocument-text-web,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-wordprocessingml-document,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-wordprocessingml-template {
  background-position: 0 -950px;
}
.elfinder-cwd-icon-zip,
.elfinder-cwd-icon-x-zip,
.elfinder-cwd-icon-x-xz,
.elfinder-cwd-icon-x-7z-compressed,
.elfinder-cwd-icon-x-gzip,
.elfinder-cwd-icon-x-tar,
.elfinder-cwd-icon-x-bzip,
.elfinder-cwd-icon-x-bzip2,
.elfinder-cwd-icon-x-rar,
.elfinder-cwd-icon-x-rar-compressed {
  background-position: 0 -1000px;
}
.elfinder-cwd-icon-postscript {
  background-position: 0 -1050px;
}
.elfinder-cwd-icon-vnd-adobe-photoshop {
  background-position: 0 -1100px;
}
.elfinder-cwd-icon-vnd-adobe-photoshop:before {
  content: none !important;
}
.elfinder-cwd-icon-x-shockwave-flash {
  background-position: 0 -1150px;
}
.elfinder-cwd-icon-vnd-android-package-archive {
  background-position: 0 -1200px;
}
.elfinder-cwd-icon-vnd-android-package-archive:before {
  content: none !important;
}
.elfinder-cwd-icon-x-c,
.elfinder-cwd-icon-x-csrc,
.elfinder-cwd-icon-x-chdr,
.elfinder-cwd-icon-x-c--,
.elfinder-cwd-icon-x-c--src,
.elfinder-cwd-icon-x-c--hdr {
  background-position: 0 -1250px;
}
.elfinder-cwd-icon-css {
  background-position: 0 -1300px;
}
.elfinder-cwd-icon-html {
  background-position: 0 -1350px;
}
.elfinder-cwd-icon-x-jar,
.elfinder-cwd-icon-x-java,
.elfinder-cwd-icon-x-java-source {
  background-position: 0 -1400px;
}
.elfinder-cwd-icon-x-jar:before,
.elfinder-cwd-icon-x-java:before,
.elfinder-cwd-icon-x-java-source:before {
  content: none !important;
}
.elfinder-cwd-icon-javascript,
.elfinder-cwd-icon-x-javascript {
  background-position: 0 -1450px;
}
.elfinder-cwd-icon-json {
  background-position: 0 -1500px;
}
.elfinder-cwd-icon-json:before {
  content: none !important;
}
.elfinder-cwd-icon-markdown,
.elfinder-cwd-icon-x-markdown {
  background-position: 0 -1550px;
}
.elfinder-cwd-icon-markdown:before,
.elfinder-cwd-icon-x-markdown:before {
  content: none !important;
}
.elfinder-cwd-icon-x-perl {
  background-position: 0 -1600px;
}
.elfinder-cwd-icon-x-php {
  background-position: 0 -1650px;
}
.elfinder-cwd-icon-x-python:after,
.elfinder-cwd-icon-x-python {
  background-position: 0 -1700px;
}
.elfinder-cwd-icon-x-ruby {
  background-position: 0 -1750px;
}
.elfinder-cwd-icon-x-sh,
.elfinder-cwd-icon-x-shellscript {
  background-position: 0 -1800px;
}
.elfinder-cwd-icon-sql,
.elfinder-cwd-icon-x-sql,
.elfinder-cwd-icon-x-sqlite3 {
  background-position: 0 -1850px;
}
.elfinder-cwd-icon-x-eps,
.elfinder-cwd-icon-svg,
.elfinder-cwd-icon-svg-xml {
  background-position: 0 -1900px;
}
.elfinder-cwd-icon-xml:after,
.elfinder-cwd-icon-xml {
  background-position: 0 -1950px;
}
.elfinder-cwd-icon-zip:before,
.elfinder-cwd-icon-x-zip:before {
  content: 'zip' !important;
}
.elfinder-cwd-icon-x-xz:before {
  content: 'xz' !important;
}
.elfinder-cwd-icon-x-7z-compressed:before {
  content: '7z' !important;
}
.elfinder-cwd-icon-x-gzip:before {
  content: 'gzip' !important;
}
.elfinder-cwd-icon-x-tar:before {
  content: 'tar' !important;
}
.elfinder-cwd-icon-x-bzip:before,
.elfinder-cwd-icon-x-bzip2:before {
  content: 'bzip' !important;
}
.elfinder-cwd-icon-x-rar:before,
.elfinder-cwd-icon-x-rar-compressed:before {
  content: 'rar' !important;
}
/**
 * Toolbar
 */
.elfinder-toolbar {
  background: #3b4047;
  -webkit-border-radius: 0;
  border-radius: 0;
  border: 0;
  padding: 5px 0;
}
.elfinder-toolbar .elfinder-button-icon {
  font-size: 20px;
  color: #ddd;
  margin-top: -2px;
}
.elfinder-buttonset {
  -webkit-border-radius: 0;
  border-radius: 0;
  border: 0;
  margin: 0 5px;
  height: 24px;
}
.elfinder .elfinder-button {
  background: transparent;
  -webkit-border-radius: 0;
  border-radius: 0;
  cursor: pointer;
  color: #efefef;
}
.elfinder-toolbar-button-separator {
  border: 0;
}
.elfinder-button-menu {
  -webkit-border-radius: 2px;
  border-radius: 2px;
  -webkit-box-shadow: 0 1px 6px rgba(0, 0, 0, 0.3);
  box-shadow: 0 1px 6px rgba(0, 0, 0, 0.3);
  border: none;
  margin-top: 5px;
}
.elfinder-button-menu-item {
  color: #666;
  padding: 6px 19px;
}
.elfinder-button-menu-item.ui-state-hover {
  color: #141414;
  background-color: #f5f4f4;
}
.elfinder-button-menu-item-separated {
  border-top: 1px solid #e5e5e5;
}
.elfinder-button-menu-item-separated.ui-state-hover {
  border-top: 1px solid #e5e5e5;
}
.elfinder .elfinder-button-search {
  margin: 0 10px;
  min-height: inherit;
  overflow: hidden;
}
.elfinder .elfinder-button-search .ui-icon {
  color: #fff !important;
}
.elfinder .elfinder-button-search input {
  background: rgba(40, 42, 45, 0.79);
  -webkit-border-radius: 2px;
  border-radius: 2px;
  -webkit-box-sizing: content-box;
  -moz-box-sizing: content-box;
  box-sizing: content-box;
  border: 0;
  margin: 0;
  padding: 0 23px;
  height: 24px !important;
  color: #fff;
}
.elfinder .elfinder-button-search .elfinder-button-menu {
  margin-top: 4px;
  border: none;
  -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.5);
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.5);
}
.elfinder .elfinder-button-search-menu {
  -webkit-border-radius: 0;
  border-radius: 0;
  top: 30px !important;
}
.elfinder .elfinder-button-search-menu .ui-button {
  padding: 0.4em 1em !important;
}
/**
 * Navbar
 */
.elfinder .elfinder-navbar {
  background: #535e64;
  -webkit-box-shadow: 0 1px 8px rgba(0, 0, 0, 0.6);
  box-shadow: 0 1px 8px rgba(0, 0, 0, 0.6);
  border: none;
}
.elfinder .elfinder-navbar .elfinder-lock,
.elfinder .elfinder-navbar .elfinder-perms,
.elfinder .elfinder-navbar .elfinder-symlink {
  color: #1d1d1d;
  opacity: 0.8;
}
.elfinder-navbar-dir {
  color: #e6e6e6;
  cursor: pointer;
  -webkit-border-radius: 2px;
  border-radius: 2px;
  padding: 5px;
  border: none;
}
.elfinder-navbar-dir .elfinder-navbar-icon {
  color: #fff;
}
.elfinder-navbar-dir.ui-state-hover,
.elfinder-navbar-dir.ui-state-active.ui-state-hover {
  background: #3c4448;
  color: #e6e6e6;
  border: none;
}
.elfinder-navbar-dir.ui-state-hover .elfinder-navbar-icon,
.elfinder-navbar-dir.ui-state-active.ui-state-hover .elfinder-navbar-icon {
  color: #fff;
}
.elfinder-navbar .ui-state-active,
.elfinder-disabled .elfinder-navbar .ui-state-active {
  background: #41494e;
  color: #e8e8e8 !important;
  border: none;
}
.elfinder-navbar .ui-state-active.elfinder-navbar-dir .elfinder-navbar-icon,
.elfinder-disabled .elfinder-navbar .ui-state-active.elfinder-navbar-dir .elfinder-navbar-icon {
  color: #e8e8e8 !important;
}
/**
 * Workzone
 */
.elfinder-workzone {
  background: #cdcfd4;
}
.elfinder-cwd-file {
  color: #555;
}
.elfinder-cwd-file.ui-state-hover,
.elfinder-cwd-file.ui-selected.ui-state-hover {
  background: #4c5961;
  color: #ddd;
}
.elfinder-cwd-file.ui-selected {
  background: #455158;
  color: #555;
}
.elfinder-cwd-filename input,
.elfinder-cwd-filename textarea {
  padding: 2px;
  -webkit-border-radius: 2px !important;
  border-radius: 2px !important;
  background: #fff;
  color: #222;
}
.elfinder-cwd-filename input:focus,
.elfinder-cwd-filename textarea:focus {
  outline: none;
  border: 1px solid #555;
}
.elfinder-cwd-view-icons .elfinder-cwd-file .ui-state-hover,
.elfinder-cwd-view-icons .elfinder-cwd-file .elfinder-cwd-filename.ui-state-hover,
.elfinder-disabled .elfinder-cwd-view-icons .elfinder-cwd-file .elfinder-cwd-filename.ui-state-hover,
.elfinder-disabled .elfinder-cwd table td.ui-state-hover,
.elfinder-cwd-view-icons .elfinder-cwd-file .ui-state-active {
  background: transparent;
  color: #ddd;
}
.elfinder-cwd table {
  padding: 0;
}
.elfinder-cwd table thead td {
  padding: 5px 14px;
}
.elfinder-cwd table tr {
  border: 0 !important;
}
.elfinder-cwd table tr:nth-child(odd) {
  background-color: transparent;
}
.elfinder-cwd table tr:nth-child(odd).ui-state-hover {
  background-color: #4c5961;
}
.elfinder-cwd.elfinder-table-header-sticky table {
  border: 0;
}
.elfinder-cwd .elfinder-lock,
.elfinder-cwd .elfinder-perms,
.elfinder-cwd .elfinder-symlink {
  color: #4d4d4d;
}
.elfinder-cwd-view-icons .elfinder-lock {
  top: 0;
}
.elfinder-cwd-view-list thead td .ui-resizable-handle {
  top: 3px;
}
.elfinder-cwd-view-list .elfinder-lock,
.elfinder-cwd-view-list .elfinder-perms,
.elfinder-cwd-view-list .elfinder-symlink {
  font-size: 14px;
  opacity: 0.7;
}
.elfinder-cwd-view-list .elfinder-perms {
  left: inherit;
}
#elfinder-elfinder-cwd-thead td {
  background: #353b42;
  color: #ddd;
}
#elfinder-elfinder-cwd-thead td.ui-state-hover,
#elfinder-elfinder-cwd-thead td.ui-state-active {
  background: #2a2e34;
}
#elfinder-elfinder-cwd-thead td.ui-state-active.ui-state-hover {
  background: #2e333a;
}
.elfinder .ui-selectable-helper {
  border: 1px solid #3b4047;
  background-color: rgba(104, 111, 121, 0.5);
}
.elfinder-cwd-wrapper.elfinder-cwd-wrapper-trash {
  background-color: #e4e4e4;
}
.elfinder-cwd-wrapper.elfinder-cwd-wrapper-trash .elfinder-cwd-file {
  color: #333;
}
.elfinder-cwd-wrapper.elfinder-cwd-wrapper-trash .elfinder-cwd-file.ui-state-hover,
.elfinder-cwd-wrapper.elfinder-cwd-wrapper-trash .elfinder-cwd-file.ui-selected.ui-state-hover {
  background: #4c5961;
  color: #ddd;
}
.elfinder-cwd-wrapper.elfinder-cwd-wrapper-trash .elfinder-cwd-file.ui-selected {
  background: #455158;
  color: #555;
}
.elfinder-info-title .elfinder-cwd-icon:before {
  top: 32px;
  display: block;
  margin: 0 auto;
}
.elfinder-info-title .elfinder-cwd-icon.elfinder-cwd-bgurl:before {
  background-color: #313131 !important;
}
.elfinder-cwd-view-icons .elfinder-cwd-icon.elfinder-cwd-bgurl:before {
  left: inherit;
  background-color: #313131;
}
.elfinder-cwd-icon:before,
.elfinder-quicklook .elfinder-cwd-icon:before,
.elfinder-cwd-size1 .elfinder-cwd-icon:before,
.elfinder-cwd-size2 .elfinder-cwd-icon:before,
.elfinder-cwd-size3 .elfinder-cwd-icon:before,
.elfinder-cwd-size1 .elfinder-cwd-icon.elfinder-cwd-bgurl:before,
.elfinder-cwd-size2 .elfinder-cwd-icon.elfinder-cwd-bgurl:before,
.elfinder-cwd-size3 .elfinder-cwd-icon.elfinder-cwd-bgurl:before {
  top: 35px;
  left: 50% !important;
  position: relative !important;
  display: block !important;
  -webkit-transform: translateX(-50%);
  -ms-transform: translateX(-50%);
  transform: translateX(-50%);
  max-width: 52px;
  color: #fff;
}
.elfinder .elfinder-cwd-view-icons .elfinder-cwd-bgurl:after,
.elfinder .elfinder-quicklook-info-wrapper .elfinder-cwd-bgurl:after {
  display: none;
}
.elfinder-cwd-size1 .elfinder-cwd-icon.elfinder-cwd-bgurl:before {
  top: 53px;
  -webkit-transform: scale(1.32) translateX(-50%);
  -ms-transform: scale(1.32) translateX(-50%);
  transform: scale(1.32) translateX(-50%);
}
.elfinder-cwd-size2 .elfinder-cwd-icon.elfinder-cwd-bgurl:before {
  top: 74px;
  -webkit-transform: scale(1.53) translateX(-50%);
  -ms-transform: scale(1.53) translateX(-50%);
  transform: scale(1.53) translateX(-50%);
}
.elfinder-cwd-size3 .elfinder-cwd-icon.elfinder-cwd-bgurl:before {
  top: 87px;
  -webkit-transform: scale(2.22) translateX(-50%);
  -ms-transform: scale(2.22) translateX(-50%);
  transform: scale(2.22) translateX(-50%);
}
/**
 * Status Bar
 */
.elfinder .elfinder-statusbar {
  background: #3b4047;
  -webkit-border-radius: 0;
  border-radius: 0;
  border: 0;
  color: #cfd2d4;
}
.elfinder-path,
.elfinder-stat-size {
  margin: 0 15px;
}
/**
 * Input & Select
 */
.elfinder input,
.elfinder select {
  padding: 4px;
  color: #666;
  background: #fff;
  -webkit-border-radius: 3px;
  border-radius: 3px;
  font-weight: normal;
  border-color: #888;
  -webkit-box-shadow: none !important;
  box-shadow: none !important;
}
.elfinder input.ui-state-hover,
.elfinder select.ui-state-hover {
  background: #fff !important;
  color: #666 !important;
}
.elfinder input[type="checkbox"] {
  position: relative;
  height: initial;
}
.elfinder input[type="checkbox"]:after,
.elfinder input[type="checkbox"]:focus:after {
  content: "";
  display: block;
  width: 12px;
  height: 12px;
  border: 1px solid #707070;
  background-color: #fff;
  -webkit-border-radius: 2px;
  border-radius: 2px;
}
.elfinder input[type="checkbox"]:checked:before {
  content: "";
  position: absolute;
  top: -3px;
  left: 6px;
  display: table;
  width: 4px;
  height: 12px;
  border: 2px solid #707070;
  border-top-width: 0;
  border-left-width: 0;
  -webkit-transform: rotate(45deg);
  -ms-transform: rotate(45deg);
  transform: rotate(45deg);
}
/**
 * Buttons
 */
.elfinder .ui-button,
.elfinder .ui-button:active,
.elfinder .ui-button.ui-state-default {
  display: inline-block;
  font-weight: normal;
  text-align: center;
  vertical-align: middle;
  cursor: pointer;
  white-space: nowrap;
  -webkit-border-radius: 3px;
  border-radius: 3px;
  text-transform: uppercase;
  -webkit-box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.4) !important;
  box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.4) !important;
  -webkit-transition: all 0.4s;
  -o-transition: all 0.4s;
  transition: all 0.4s;
  background: #fff;
  color: #222;
  border: none;
  padding: 7px 6px;
}
.elfinder .ui-button .ui-icon,
.elfinder .ui-button:active .ui-icon,
.elfinder .ui-button.ui-state-default .ui-icon {
  color: #222;
}
.elfinder .ui-button:hover,
.elfinder a.ui-button:active,
.elfinder .ui-button:active,
.elfinder .ui-button:focus,
.elfinder .ui-button.ui-state-hover,
.elfinder .ui-button.ui-state-active {
  background: #3498db !important;
  color: #fff !important;
  border: none;
}
.elfinder .ui-button:hover .ui-icon,
.elfinder a.ui-button:active .ui-icon,
.elfinder .ui-button:active .ui-icon,
.elfinder .ui-button:focus .ui-icon,
.elfinder .ui-button.ui-state-hover .ui-icon,
.elfinder .ui-button.ui-state-active .ui-icon {
  color: #fff;
}
.elfinder .ui-button.ui-state-active:hover {
  background: #217dbb;
  color: #fff;
  border: none;
}
.elfinder .ui-button:focus {
  outline: none !important;
}
.elfinder .ui-controlgroup-horizontal .ui-button {
  -webkit-border-radius: 0;
  border-radius: 0;
  border: 0;
}
.elfinder input:not([type="checkbox"]),
.elfinder .elfinder-resize-preset-container .ui-button {
  height: 21px;
}
/**
 * Context Menu
 */
.elfinder .elfinder-contextmenu,
.elfinder .elfinder-contextmenu-sub {
  -webkit-border-radius: 2px;
  border-radius: 2px;
  -webkit-box-shadow: 0 1px 6px rgba(0, 0, 0, 0.3);
  box-shadow: 0 1px 6px rgba(0, 0, 0, 0.3);
  border: none;
}
.elfinder .elfinder-contextmenu-separator,
.elfinder .elfinder-contextmenu-sub-separator {
  border-top: 1px solid #e5e5e5;
}
.elfinder .elfinder-contextmenu-item {
  color: #666;
  padding: 5px 30px;
}
.elfinder .elfinder-contextmenu-item.ui-state-hover {
  background-color: #f5f4f4;
  color: #141414;
}
.elfinder .elfinder-contextmenu-item.ui-state-active {
  background-color: #2196f3;
  color: #fff;
}
/**
 * Dialogs
 */
.elfinder .elfinder-dialog {
  -webkit-border-radius: 0;
  border-radius: 0;
  border: 0;
  -webkit-box-shadow: 0 1px 30px rgba(0, 0, 0, 0.6);
  box-shadow: 0 1px 30px rgba(0, 0, 0, 0.6);
}
.elfinder .elfinder-dialog .ui-dialog-content[id*="edit-elfinder-elfinder-"] {
  padding: 0;
}
.elfinder .elfinder-dialog .ui-tabs {
  -webkit-border-radius: 0;
  border-radius: 0;
  border: 0;
  padding: 0;
}
.elfinder .elfinder-dialog .ui-tabs-nav {
  -webkit-border-radius: 0;
  border-radius: 0;
  border: 0;
  background: transparent;
  border-bottom: 1px solid #ddd;
}
.elfinder .elfinder-dialog .ui-tabs-nav li {
  border: 0;
  font-weight: normal;
  background: transparent;
  margin: 0;
  padding: 0;
}
.elfinder .elfinder-dialog .ui-tabs-nav li a {
  padding: 7px 9px;
}
.elfinder .elfinder-dialog .ui-tabs-nav .ui-tabs-selected a,
.elfinder .elfinder-dialog .ui-tabs-nav .ui-state-active a,
.elfinder .elfinder-dialog .ui-tabs-nav li:hover a {
  -webkit-box-shadow: inset 0 -2px 0 #3498db;
  box-shadow: inset 0 -2px 0 #3498db;
  color: #3498db;
}
.elfinder .elfinder-dialog .ui-tabs .elfinder-tabstop.ui-state-hover {
  background: transparent;
  -webkit-box-shadow: inset 0 -2px 0 #3498db;
  box-shadow: inset 0 -2px 0 #3498db;
  color: #3498db;
}
.elfinder .elfinder-dialog label.ui-state-hover {
  background: transparent;
}
.elfinder .elfinder-dialog .ui-resizable-se {
  display: none;
}
.std42-dialog .ui-dialog-titlebar {
  background: #353b44;
  -webkit-border-radius: 0;
  border-radius: 0;
  border: 0;
}
.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-button .ui-icon {
  border-color: inherit;
  -webkit-transition: 0.2s ease-out;
  -o-transition: 0.2s ease-out;
  transition: 0.2s ease-out;
  opacity: 0.8;
  color: #fff;
  width: auto;
  height: auto;
  font-size: 12px;
  padding: 3px;
}
.std42-dialog,
.std42-dialog .ui-dialog-content,
.std42-dialog.elfinder-bg-translucent,
.std42-dialog.elfinder-bg-translucent .ui-widget-content {
  background-color: #fff;
}
.std42-dialog .ui-dialog-buttonpane button {
  margin: -1px 2px 2px;
  padding: 7px 6px;
}
.std42-dialog .ui-dialog-buttonpane button span.ui-icon {
  padding: 0;
}
.std42-dialog .ui-dialog-buttonpane .ui-dialog-buttonset.elfinder-edit-extras select {
  margin-top: 0;
}
.std42-dialog,
.std42-dialog .ui-widget-content {
  background-color: #fff;
}
.elfinder-mobile .std42-dialog .ui-dialog-titlebar .ui-dialog-titlebar-close .ui-icon,
.std42-dialog .ui-dialog-titlebar .ui-dialog-titlebar-close:hover .ui-icon {
  background-color: #f44336;
}
.elfinder-mobile .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-full .ui-icon,
.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-full:hover .ui-icon {
  background-color: #4caf50;
}
.elfinder-mobile .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-minimize .ui-icon,
.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-minimize:hover .ui-icon {
  background-color: #ff9800;
}
.elfinder-dialog-title {
  color: #f1f1f1;
}
.elfinder .ui-widget-content {
  font-family: "Noto Sans", sans-serif;
  color: #546e7a;
}
.elfinder-upload-dialog-wrapper .elfinder-upload-dirselect {
  width: inherit;
  height: inherit;
  padding: 7px;
  margin-left: 5px;
  color: #222;
  -webkit-box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.4);
  box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.4);
  background: #fff;
  bottom: 4px;
  -webkit-border-radius: 2px;
  border-radius: 2px;
}
.elfinder-upload-dialog-wrapper .elfinder-upload-dirselect.ui-state-hover {
  background: #3498db !important;
  color: #fff !important;
  outline: none;
}
.elfinder-upload-dialog-wrapper .ui-button {
  padding: 0.4em 3px;
  margin: 0 -15px 0 19px;
}
.elfinder-upload-dropbox {
  border: 2px dashed #bbb;
}
.elfinder-upload-dropbox:focus {
  outline: none;
}
.elfinder-upload-dropbox.ui-state-hover {
  background: #f1f1f1;
  border: 2px dashed #bbb;
}
.elfinder-dialog-resize .elfinder-resize-control-panel {
  margin-left: -5px;
}
.elfinder-dialog-resize .elfinder-resize-control-panel .ui-button {
  height: inherit;
  margin-bottom: 5px;
}
.elfinder-help * {
  color: #546e7a;
}
.elfinder-help a {
  color: #3498db;
}
.elfinder-help a:hover {
  color: #217dbb;
}
.elfinder .ui-slider.ui-slider-horizontal {
  height: 2px;
  border: 0;
  background-color: #bababa !important;
}
.elfinder .ui-slider .ui-slider-handle {
  background-image: none;
  background-color: #5d5858;
  -webkit-border-radius: 50%;
  border-radius: 50%;
  border: 0;
  margin-top: -3px;
}
.elfinder .ui-slider .ui-slider-handle.ui-state-hover {
  background: #5d5858 !important;
  -webkit-box-shadow: none !important;
  box-shadow: none !important;
  -webkit-border-radius: 50%;
  border-radius: 50%;
  cursor: pointer;
}
/**
 * Quick Look
 */
.elfinder-quicklook {
  background: #232323;
  -webkit-border-radius: 2px;
  border-radius: 2px;
}
.elfinder-quicklook-titlebar {
  background: inherit;
}
.elfinder-quicklook-titlebar-icon .ui-icon {
  background: transparent;
  color: #fff;
}
.elfinder-quicklook-fullscreen .elfinder-quicklook-navbar {
  border: inherit;
  opacity: inherit;
  -webkit-border-radius: 4px;
  border-radius: 4px;
  background: rgba(66, 66, 66, 0.73);
}
.elfinder .elfinder-navdock {
  border: 0;
}
.std42-dialog .ui-dialog-titlebar .ui-dialog-titlebar-close:hover .ui-icon,
.elfinder-mobile .std42-dialog .ui-dialog-titlebar .ui-dialog-titlebar-close .ui-icon,
.elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-close:hover,
.elfinder-mobile .elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-close,
.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-minimize:hover .ui-icon,
.elfinder-mobile .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-minimize .ui-icon,
.elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-minimize:hover,
.elfinder-mobile .elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-minimize,
.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-full:hover .ui-icon,
.elfinder-mobile .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-full .ui-icon,
.elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-full:hover,
.elfinder-mobile .elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-full {
  background-image: none;
}
/*!
 * elFinder-Material-Theme (Gray) v2.1.9 (https://github.com/RobiNN1/elFinder-Material-Theme)
 * Copyright 2016-2019 Róbert Kelčák {RobiNN}
 * Licensed under MIT (https://github.com/RobiNN1/elFinder-Material-Theme/blob/master/LICENSE)
 */@import url("https://fonts.googleapis.com/css?family=Noto+Sans:400,400i,700,700i&subset=cyrillic,cyrillic-ext,devanagari,greek,greek-ext,latin-ext,vietnamese");.elfinder{color:#546e7a;font-family:"Noto Sans", sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.elfinder.ui-widget.ui-widget-content{font-family:"Noto Sans", sans-serif;-webkit-box-shadow:0 1px 8px rgba(0, 0, 0, 0.6);box-shadow:0 1px 8px rgba(0, 0, 0, 0.6);-webkit-border-radius:0;border-radius:0;border:0}.elfinder *{outline:0!important}.elfinder-button-icon-spinner,.elfinder-info-spinner,.elfinder-navbar-spinner{background:url("../images/loading.svg") center center no-repeat!important;width:16px;height:16px}@-webkit-keyframes progress-animation{0%{background-position:1rem 0}to{background-position:0 0}}@keyframes progress-animation{0%{background-position:1rem 0}to{background-position:0 0}}.elfinder-notify-progressbar{border:0}.elfinder-notify-progress,.elfinder-notify-progressbar{-webkit-border-radius:0;border-radius:0}.elfinder-notify-progress,.elfinder-resize-spinner{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:1rem 1rem;background-size:1rem 1rem;-webkit-animation:progress-animation 1s linear infinite;animation:progress-animation 1s linear infinite;background-color:#0275d8;height:1rem}.elfinder .elfinder-toast>div{background-color:#323232!important;color:#d6d6d6;-webkit-box-shadow:none;box-shadow:none;opacity:inherit;padding:10px 60px}.elfinder .elfinder-toast>div button.ui-button{color:#fff}.elfinder .elfinder-toast>.toast-info button.ui-button{background-color:#3498db}.elfinder .elfinder-toast>.toast-error button.ui-button{background-color:#f44336}.elfinder .elfinder-toast>.toast-success button.ui-button{background-color:#4caf50}.elfinder .elfinder-toast>.toast-warning button.ui-button{background-color:#ff9800}.elfinder-toast-msg{font-family:"Noto Sans", sans-serif;font-size:17px}#ace_settingsmenu{font-family:"Noto Sans", sans-serif;-webkit-box-shadow:0 1px 30px rgba(0, 0, 0, 0.6)!important;box-shadow:0 1px 30px rgba(0, 0, 0, 0.6)!important;background-color:#1d2736!important;color:#e6e6e6!important}#ace_settingsmenu,#kbshortcutmenu{padding:0}.ace_optionsMenuEntry{padding:5px 10px}.ace_optionsMenuEntry:hover{background-color:#111721}.ace_optionsMenuEntry label{font-size:13px}#ace_settingsmenu input[type=text],#ace_settingsmenu select{margin:1px 2px 2px;padding:2px 5px;-webkit-border-radius:3px;border-radius:3px;border:0;background:rgba(9, 53, 121, 0.75);color:white!important}@font-face{font-family:material;src:url("../icons/material.eot?91804974");src:url("../icons/material.eot?91804974#iefix") format("embedded-opentype"), url("../icons/material.woff2?91804974") format("woff2"), url("../icons/material.woff?91804974") format("woff"), url("../icons/material.ttf?91804974") format("truetype"), url("../icons/material.svg?91804974#material") format("svg");font-weight:normal;font-style:normal}@media screen and (-webkit-min-device-pixel-ratio:0){@font-face{font-family:material;src:url("../icons/material.svg?91804974#material") format("svg")}}.elfinder-button-icon,.elfinder .ui-icon,.ui-widget-content .ui-icon,.ui-widget-header .ui-icon{font:normal normal normal 14px/1 material;background-image:inherit;text-indent:inherit}.elfinder .ui-button-icon-only .ui-icon{font:normal normal normal 14px/1 material;background-image:inherit!important;text-indent:0;font-size:16px}.elfinder-button-icon{background:inherit}.elfinder-button-icon-home:before{content:'\e800'}.elfinder-button-icon-back:before{content:'\e801'}.elfinder-button-icon-forward:before{content:'\e802'}.elfinder-button-icon-up:before{content:'\e803'}.elfinder-button-icon-dir:before{content:'\e804'}.elfinder-button-icon-opendir:before{content:'\e805'}.elfinder-button-icon-reload:before{content:'\e806'}.elfinder-button-icon-open:before{content:'\e807'}.elfinder-button-icon-mkdir:before{content:'\e808'}.elfinder-button-icon-mkfile:before{content:'\e809'}.elfinder-button-icon-rm:before{content:'\e80a'}.elfinder-button-icon-trash:before{content:'\e80b'}.elfinder-button-icon-restore:before{content:'\e80c'}.elfinder-button-icon-copy:before{content:'\e80d'}.elfinder-button-icon-cut:before{content:'\e80e'}.elfinder-button-icon-paste:before{content:'\e80f'}.elfinder-button-icon-getfile:before{content:'\e810'}.elfinder-button-icon-duplicate:before{content:'\e811'}.elfinder-button-icon-rename:before{content:'\e812'}.elfinder-button-icon-edit:before{content:'\e813'}.elfinder-button-icon-quicklook:before{content:'\e814'}.elfinder-button-icon-upload:before{content:'\e815'}.elfinder-button-icon-download:before{content:'\e816'}.elfinder-button-icon-info:before{content:'\e817'}.elfinder-button-icon-extract:before{content:'\e818'}.elfinder-button-icon-archive:before{content:'\e819'}.elfinder-button-icon-view:before{content:'\e81a'}.elfinder-button-icon-view-list:before{content:'\e81b'}.elfinder-button-icon-help:before{content:'\e81c'}.elfinder-button-icon-resize:before{content:'\e81d'}.elfinder-button-icon-link:before{content:'\e81e'}.elfinder-button-icon-search:before{content:'\e81f'}.elfinder-button-icon-sort:before{content:'\e820'}.elfinder-button-icon-rotate-r:before{content:'\e821'}.elfinder-button-icon-rotate-l:before{content:'\e822'}.elfinder-button-icon-netmount:before{content:'\e823'}.elfinder-button-icon-netunmount:before{content:'\e824'}.elfinder-button-icon-places:before{content:'\e825'}.elfinder-button-icon-chmod:before{content:'\e826'}.elfinder-button-icon-accept:before{content:'\e827'}.elfinder-button-icon-menu:before{content:'\e828'}.elfinder-button-icon-colwidth:before{content:'\e829'}.elfinder-button-icon-fullscreen:before{content:'\e82a'}.elfinder-button-icon-unfullscreen:before{content:'\e82b'}.elfinder-button-icon-empty:before{content:'\e82c'}.elfinder-button-icon-undo:before{content:'\e82d'}.elfinder-button-icon-redo:before{content:'\e82e'}.elfinder-button-icon-preference:before{content:'\e82f'}.elfinder-button-icon-mkdirin:before{content:'\e830'}.elfinder-button-icon-selectall:before{content:'\e831'}.elfinder-button-icon-selectnone:before{content:'\e832'}.elfinder-button-icon-selectinvert:before{content:'\e833'}.elfinder-button-icon-logout:before{content:'\e85a'}.elfinder-button-icon-opennew:before{content:'\e85b'}.elfinder-button-icon-hide:before{content:'\e85d'}.elfinder-button-search .ui-icon.ui-icon-search{font-size:17px}.elfinder-button-search .ui-icon:hover{opacity:1}.elfinder-navbar-icon{font:normal normal normal 16px/1 material;background-image:inherit!important}.elfinder-navbar-icon:before{content:'\e804'}.elfinder-droppable-active .elfinder-navbar-icon:before,.elfinder .ui-state-active .elfinder-navbar-icon:before,.elfinder .ui-state-hover .elfinder-navbar-icon:before{content:'\e805'}.elfinder-navbar-root-local .elfinder-navbar-icon:before{content:'\e83d'!important}.elfinder-navbar-root-ftp .elfinder-navbar-icon:before{content:'\e823'!important}.elfinder-navbar-root-sql .elfinder-navbar-icon:before{content:'\e83e'!important}.elfinder-navbar-root-dropbox .elfinder-navbar-icon:before{content:'\e83f'!important}.elfinder-navbar-root-googledrive .elfinder-navbar-icon:before{content:'\e840'!important}.elfinder-navbar-root-onedrive .elfinder-navbar-icon:before{content:'\e841'!important}.elfinder-navbar-root-box .elfinder-navbar-icon:before{content:'\e842'!important}.elfinder-navbar-root-trash .elfinder-navbar-icon:before{content:'\e80b'!important}.elfinder-navbar-root-zip .elfinder-navbar-icon:before{content:'\e85c'!important}.elfinder-navbar-root-network .elfinder-navbar-icon:before{content:'\e823'!important}.elfinder-places .elfinder-navbar-root .elfinder-navbar-icon:before{content:'\e825'!important}.elfinder-navbar-arrow{background-image:inherit!important;font:normal normal normal 14px/1 material;font-size:10px;padding-top:3px;padding-left:2px;color:#a9a9a9}.elfinder .ui-state-active .elfinder-navbar-arrow{color:#fff}.elfinder-ltr .elfinder-navbar-collapsed .elfinder-navbar-arrow:before{content:'\e857'}.elfinder-rtl .elfinder-navbar-collapsed .elfinder-navbar-arrow:before{content:'\e858'}.elfinder-ltr .elfinder-navbar-expanded .elfinder-navbar-arrow:before,.elfinder-rtl .elfinder-navbar-expanded .elfinder-navbar-arrow:before{content:'\e851'}div.elfinder-cwd-wrapper-list tr.ui-state-default td span.ui-icon{font-size:8px;margin-top:5px;margin-right:5px}div.elfinder-cwd-wrapper-list .ui-icon-grip-dotted-vertical{margin:2px}.elfinder-cwd-view-list .elfinder-navbar-root-box td .elfinder-cwd-icon,.elfinder-cwd-view-list .elfinder-navbar-root-dropbox td .elfinder-cwd-icon,.elfinder-cwd-view-list .elfinder-navbar-root-ftp td .elfinder-cwd-icon,.elfinder-cwd-view-list .elfinder-navbar-root-googledrive td .elfinder-cwd-icon,.elfinder-cwd-view-list .elfinder-navbar-root-local td .elfinder-cwd-icon,.elfinder-cwd-view-list .elfinder-navbar-root-network td .elfinder-cwd-icon,.elfinder-cwd-view-list .elfinder-navbar-root-onedrive td .elfinder-cwd-icon,.elfinder-cwd-view-list .elfinder-navbar-root-sql td .elfinder-cwd-icon,.elfinder-cwd-view-list .elfinder-navbar-root-trash td .elfinder-cwd-icon,.elfinder-cwd-view-list .elfinder-navbar-root-zip td .elfinder-cwd-icon,.elfinder-navbar-root-box .elfinder-cwd-icon,.elfinder-navbar-root-dropbox .elfinder-cwd-icon,.elfinder-navbar-root-ftp .elfinder-cwd-icon,.elfinder-navbar-root-googledrive .elfinder-cwd-icon,.elfinder-navbar-root-local .elfinder-cwd-icon,.elfinder-navbar-root-network .elfinder-cwd-icon,.elfinder-navbar-root-onedrive .elfinder-cwd-icon,.elfinder-navbar-root-sql .elfinder-cwd-icon,.elfinder-navbar-root-trash .elfinder-cwd-icon,.elfinder-navbar-root-zip .elfinder-cwd-icon{background-image:inherit}.elfinder-cwd-view-list .elfinder-navbar-root-box td .elfinder-cwd-icon:before,.elfinder-cwd-view-list .elfinder-navbar-root-dropbox td .elfinder-cwd-icon:before,.elfinder-cwd-view-list .elfinder-navbar-root-ftp td .elfinder-cwd-icon:before,.elfinder-cwd-view-list .elfinder-navbar-root-googledrive td .elfinder-cwd-icon:before,.elfinder-cwd-view-list .elfinder-navbar-root-local td .elfinder-cwd-icon:before,.elfinder-cwd-view-list .elfinder-navbar-root-network td .elfinder-cwd-icon:before,.elfinder-cwd-view-list .elfinder-navbar-root-onedrive td .elfinder-cwd-icon:before,.elfinder-cwd-view-list .elfinder-navbar-root-sql td .elfinder-cwd-icon:before,.elfinder-cwd-view-list .elfinder-navbar-root-trash td .elfinder-cwd-icon:before,.elfinder-cwd-view-list .elfinder-navbar-root-zip td .elfinder-cwd-icon:before,.elfinder-navbar-root-box .elfinder-cwd-icon:before,.elfinder-navbar-root-dropbox .elfinder-cwd-icon:before,.elfinder-navbar-root-ftp .elfinder-cwd-icon:before,.elfinder-navbar-root-googledrive .elfinder-cwd-icon:before,.elfinder-navbar-root-local .elfinder-cwd-icon:before,.elfinder-navbar-root-network .elfinder-cwd-icon:before,.elfinder-navbar-root-onedrive .elfinder-cwd-icon:before,.elfinder-navbar-root-sql .elfinder-cwd-icon:before,.elfinder-navbar-root-trash .elfinder-cwd-icon:before,.elfinder-navbar-root-zip .elfinder-cwd-icon:before{font-family:material;background-color:transparent;color:#525252;font-size:55px;position:relative;top:-10px!important;padding:0;display:contents!important}.elfinder-cwd-view-list .elfinder-navbar-root-local td .elfinder-cwd-icon:before,.elfinder-navbar-root-local .elfinder-cwd-icon:before{content:'\e83d'}.elfinder-cwd-view-list .elfinder-navbar-root-ftp td .elfinder-cwd-icon:before,.elfinder-navbar-root-ftp .elfinder-cwd-icon:before{content:'\e823'}.elfinder-cwd-view-list .elfinder-navbar-root-sql td .elfinder-cwd-icon:before,.elfinder-navbar-root-sql .elfinder-cwd-icon:before{content:'\e83e'}.elfinder-cwd-view-list .elfinder-navbar-roor-dropbox td .elfinder-cwd-icon:before,.elfinder-navbar-roor-dropbox .elfinder-cwd-icon:before{content:'\e83f'}.elfinder-cwd-view-list .elfinder-navbar-roor-googledrive td .elfinder-cwd-icon:before,.elfinder-navbar-roor-googledrive .elfinder-cwd-icon:before{content:'\e840'}.elfinder-cwd-view-list .elfinder-navbar-roor-onedrive td .elfinder-cwd-icon:before,.elfinder-navbar-roor-onedrive .elfinder-cwd-icon:before{content:'\e841'}.elfinder-cwd-view-list .elfinder-navbar-roor-box td .elfinder-cwd-icon:before,.elfinder-navbar-roor-box .elfinder-cwd-icon:before{content:'\e842'}.elfinder-cwd-view-list .elfinder-navbar-root-trash td .elfinder-cwd-icon:before,.elfinder-navbar-root-trash .elfinder-cwd-icon:before{content:'\e80b'}.elfinder-cwd-view-list .elfinder-navbar-root-zip td .elfinder-cwd-icon:before,.elfinder-navbar-root-zip .elfinder-cwd-icon:before{content:'\e85c'}.elfinder-cwd-view-list .elfinder-navbar-root-network td .elfinder-cwd-icon:before,.elfinder-navbar-root-network .elfinder-cwd-icon:before{content:'\e823'}.elfinder-dialog-icon{font:normal normal normal 14px/1 material;background:inherit;color:#524949;font-size:37px}.elfinder-dialog-icon:before{content:'\e843'}.elfinder-dialog-icon-mkdir:before{content:'\e808'}.elfinder-dialog-icon-mkfile:before{content:'\e809'}.elfinder-dialog-icon-copy:before{content:'\e80d'}.elfinder-dialog-icon-move:before,.elfinder-dialog-icon-prepare:before{content:'\e844'}.elfinder-dialog-icon-chunkmerge:before,.elfinder-dialog-icon-upload:before{content:'\e815'}.elfinder-dialog-icon-rm:before{content:'\e80a'}.elfinder-dialog-icon-file:before,.elfinder-dialog-icon-open:before,.elfinder-dialog-icon-readdir:before{content:'\e807'}.elfinder-dialog-icon-reload:before{content:'\e806'}.elfinder-dialog-icon-download:before{content:'\e816'}.elfinder-dialog-icon-save:before{content:'\e845'}.elfinder-dialog-icon-rename:before{content:'\e812'}.elfinder-dialog-icon-archive:before,.elfinder-dialog-icon-zipdl:before{content:'\e819'}.elfinder-dialog-icon-extract:before{content:'\e818'}.elfinder-dialog-icon-search:before{content:'\e81f'}.elfinder-dialog-icon-loadimg:before{content:'\e846'}.elfinder-dialog-icon-url:before{content:'\e81e'}.elfinder-dialog-icon-resize:before{content:'\e81d'}.elfinder-dialog-icon-netmount:before{content:'\e823'}.elfinder-dialog-icon-netunmount:before{content:'\e824'}.elfinder-dialog-icon-chmod:before{content:'\e826'}.elfinder-dialog-icon-dim:before,.elfinder-dialog-icon-preupload:before{content:'\e847'}.elfinder-contextmenu .elfinder-contextmenu-item span.elfinder-contextmenu-icon{font-size:16px}.elfinder-contextmenu .elfinder-contextmenu-item .elfinder-contextsubmenu-item .ui-icon{font-size:15px}.elfinder-contextmenu .elfinder-contextmenu-item .elfinder-button-icon-link:before{content:'\e837'}.elfinder .elfinder-contextmenu-extra-icon{margin-top:-6px}.elfinder .elfinder-contextmenu-extra-icon a{padding:5px;margin:-16px}.elfinder-button-icon-link:before{content:'\e81e'!important}.elfinder .elfinder-contextmenu-arrow{font:normal normal normal 14px/1 material;background-image:inherit;font-size:10px!important;padding-top:3px}.elfinder .elfinder-contextmenu-arrow:before{content:'\e857'}.elfinder-contextmenu .ui-state-hover .elfinder-contextmenu-arrow{background-image:inherit}.elfinder-quicklook .ui-resizable-se{background:inherit}.elfinder-quicklook-navbar-icon{background:transparent;font:normal normal normal 14px/1 material;font-size:32px;color:#fff}.elfinder-quicklook-titlebar-icon{margin-top:-8px}.elfinder-quicklook-titlebar-icon .ui-icon{border:0;opacity:0.8;font-size:15px;padding:1px}.elfinder-quicklook-titlebar .ui-icon-circle-close,.elfinder-quicklook .ui-icon-gripsmall-diagonal-se{color:#f1f1f1}.elfinder-quicklook-navbar-icon-prev:before{content:'\e848'}.elfinder-quicklook-navbar-icon-next:before{content:'\e849'}.elfinder-quicklook-navbar-icon-fullscreen:before{content:'\e84a'}.elfinder-quicklook-navbar-icon-fullscreen-off:before{content:'\e84b'}.elfinder-quicklook-navbar-icon-close:before{content:'\e84c'}.elfinder .ui-button-icon{background-image:inherit}.elfinder .ui-icon-search:before{content:'\e81f'}.elfinder .ui-icon-close:before,.elfinder .ui-icon-closethick:before{content:'\e839'}.elfinder .ui-icon-circle-close:before{content:'\e84c'}.elfinder .ui-icon-gear:before{content:'\e82f'}.elfinder .ui-icon-gripsmall-diagonal-se:before{content:'\e838'}.elfinder .ui-icon-locked:before{content:'\e834'}.elfinder .ui-icon-unlocked:before{content:'\e836'}.elfinder .ui-icon-arrowrefresh-1-n:before{content:'\e821'}.elfinder .ui-icon-plusthick:before{content:'\e83a'}.elfinder .ui-icon-arrowreturnthick-1-s:before{content:'\e83b'}.elfinder .ui-icon-minusthick:before{content:'\e83c'}.elfinder .ui-icon-pin-s:before{content:'\e84d'}.elfinder .ui-icon-check:before{content:'\e84e'}.elfinder .ui-icon-arrowthick-1-s:before{content:'\e84f'}.elfinder .ui-icon-arrowthick-1-n:before{content:'\e850'}.elfinder .ui-icon-triangle-1-s:before{content:'\e851'}.elfinder .ui-icon-triangle-1-n:before{content:'\e852'}.elfinder .ui-icon-grip-dotted-vertical:before{content:'\e853'}.elfinder-lock,.elfinder-perms,.elfinder-symlink{background-image:inherit;font:normal normal normal 18px/1 material;color:#4d4d4d}.elfinder-na .elfinder-perms:before{content:'\e824'}.elfinder-ro .elfinder-perms:before{content:'\e835'}.elfinder-wo .elfinder-perms:before{content:'\e854'}.elfinder-group .elfinder-perms:before{content:'\e800'}.elfinder-lock:before{content:'\e84d'}.elfinder-symlink:before{content:'\e837'}.elfinder .elfinder-toast>div{font:normal normal normal 14px/1 material}.elfinder .elfinder-toast>div:before{font-size:45px;position:absolute;left:5px;top:15px}.elfinder .elfinder-toast>.toast-error,.elfinder .elfinder-toast>.toast-info,.elfinder .elfinder-toast>.toast-success,.elfinder .elfinder-toast>.toast-warning{background-image:inherit!important}.elfinder .elfinder-toast>.toast-info:before{content:'\e817';color:#3498db}.elfinder .elfinder-toast>.toast-error:before{content:'\e855';color:#f44336}.elfinder .elfinder-toast>.toast-success:before{content:'\e84e';color:#4caf50}.elfinder .elfinder-toast>.toast-warning:before{content:'\e856';color:#ff9800}.elfinder-drag-helper-icon-status{font:normal normal normal 14px/1 material;background:inherit}.elfinder-drag-helper-icon-status:before{content:'\e824'}.elfinder-drag-helper-move .elfinder-drag-helper-icon-status{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.elfinder-drag-helper-move .elfinder-drag-helper-icon-status:before{content:'\e854'}.elfinder-drag-helper-plus .elfinder-drag-helper-icon-status{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.elfinder-drag-helper-plus .elfinder-drag-helper-icon-status:before{content:'\e84c'}.elfinder-cwd-view-list td .elfinder-cwd-icon{background-image:url("../images/icons-small.svg")}.elfinder-cwd-icon{background:url("../images/icons-big.svg") 0 0 no-repeat;-webkit-border-radius:0;border-radius:0}.elfinder-cwd-icon:before{font-size:10px;position:relative;top:27px;left:inherit;padding:1px;background-color:transparent}.elfinder-cwd-icon-directory{background-position:0 -50px}.elfinder-cwd .elfinder-droppable-active .elfinder-cwd-icon{background-position:0 -100px}.elfinder-cwd-icon-group{background-position:0 -150px}.elfinder-cwd-icon-application{background-position:0 -200px}.elfinder-cwd-icon-rtf,.elfinder-cwd-icon-rtfd,.elfinder-cwd-icon-text{background-position:0 -250px}.elfinder-cwd-icon-image{background-position:0 -300px}.elfinder-cwd-icon-audio{background-position:0 -350px}.elfinder-cwd-icon-dash-xml,.elfinder-cwd-icon-flash-video,.elfinder-cwd-icon-video,.elfinder-cwd-icon-vnd-apple-mpegurl,.elfinder-cwd-icon-x-mpegurl{background-position:0 -400px}.elfinder-cwd-icon-plain,.elfinder-cwd-icon-x-empty{background-position:0 -450px}.elfinder-cwd-icon-pdf{background-position:0 -500px}.elfinder-cwd-icon-vnd-ms-office{background-position:0 -550px}.elfinder-cwd-icon-x-msaccess{background-position:0 -600px}.elfinder-cwd-icon-x-msaccess:before{content:none!important}.elfinder-cwd-icon-ms-excel,.elfinder-cwd-icon-vnd-ms-excel,.elfinder-cwd-icon-vnd-ms-excel-addin-macroEnabled-12,.elfinder-cwd-icon-vnd-ms-excel-sheet-binary-macroEnabled-12,.elfinder-cwd-icon-vnd-ms-excel-sheet-macroEnabled-12,.elfinder-cwd-icon-vnd-ms-excel-template-macroEnabled-12{background-position:0 -650px}.elfinder-cwd-icon-ms-excel:before,.elfinder-cwd-icon-vnd-ms-excel-addin-macroEnabled-12:before,.elfinder-cwd-icon-vnd-ms-excel-sheet-binary-macroEnabled-12:before,.elfinder-cwd-icon-vnd-ms-excel-sheet-macroEnabled-12:before,.elfinder-cwd-icon-vnd-ms-excel-template-macroEnabled-12:before,.elfinder-cwd-icon-vnd-ms-excel:before{content:none!important}.elfinder-cwd-icon-vnd-ms-powerpoint,.elfinder-cwd-icon-vnd-ms-powerpoint-addin-macroEnabled-12,.elfinder-cwd-icon-vnd-ms-powerpoint-presentation-macroEnabled-12,.elfinder-cwd-icon-vnd-ms-powerpoint-slide-macroEnabled-12,.elfinder-cwd-icon-vnd-ms-powerpoint-slideshow-macroEnabled-12,.elfinder-cwd-icon-vnd-ms-powerpoint-template-macroEnabled-12{background-position:0 -700px}.elfinder-cwd-icon-vnd-ms-powerpoint-addin-macroEnabled-12:before,.elfinder-cwd-icon-vnd-ms-powerpoint-presentation-macroEnabled-12:before,.elfinder-cwd-icon-vnd-ms-powerpoint-slide-macroEnabled-12:before,.elfinder-cwd-icon-vnd-ms-powerpoint-slideshow-macroEnabled-12:before,.elfinder-cwd-icon-vnd-ms-powerpoint-template-macroEnabled-12:before,.elfinder-cwd-icon-vnd-ms-powerpoint:before{content:none!important}.elfinder-cwd-icon-msword,.elfinder-cwd-icon-vnd-ms-word,.elfinder-cwd-icon-vnd-ms-word-document-macroEnabled-12,.elfinder-cwd-icon-vnd-ms-word-template-macroEnabled-12{background-position:0 -750px}.elfinder-cwd-icon-msword:before,.elfinder-cwd-icon-vnd-ms-word-document-macroEnabled-12:before,.elfinder-cwd-icon-vnd-ms-word-template-macroEnabled-12:before,.elfinder-cwd-icon-vnd-ms-word:before{content:none!important}.elfinder-cwd-icon-vnd-oasis-opendocument-base,.elfinder-cwd-icon-vnd-oasis-opendocument-chart,.elfinder-cwd-icon-vnd-oasis-opendocument-database,.elfinder-cwd-icon-vnd-oasis-opendocument-formula,.elfinder-cwd-icon-vnd-oasis-opendocument-graphics,.elfinder-cwd-icon-vnd-oasis-opendocument-graphics-template,.elfinder-cwd-icon-vnd-oasis-opendocument-image,.elfinder-cwd-icon-vnd-openofficeorg-extension{background-position:0 -800px}.elfinder-cwd-icon-vnd-oasis-opendocument-spreadsheet,.elfinder-cwd-icon-vnd-oasis-opendocument-spreadsheet-template,.elfinder-cwd-icon-vnd-openxmlformats-officedocument-spreadsheetml-sheet,.elfinder-cwd-icon-vnd-openxmlformats-officedocument-spreadsheetml-template{background-position:0 -850px}.elfinder-cwd-icon-vnd-oasis-opendocument-presentation,.elfinder-cwd-icon-vnd-oasis-opendocument-presentation-template,.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-presentation,.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-slide,.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-slideshow,.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-template{background-position:0 -900px}.elfinder-cwd-icon-vnd-oasis-opendocument-text,.elfinder-cwd-icon-vnd-oasis-opendocument-text-master,.elfinder-cwd-icon-vnd-oasis-opendocument-text-template,.elfinder-cwd-icon-vnd-oasis-opendocument-text-web,.elfinder-cwd-icon-vnd-openxmlformats-officedocument-wordprocessingml-document,.elfinder-cwd-icon-vnd-openxmlformats-officedocument-wordprocessingml-template{background-position:0 -950px}.elfinder-cwd-icon-x-7z-compressed,.elfinder-cwd-icon-x-bzip,.elfinder-cwd-icon-x-bzip2,.elfinder-cwd-icon-x-gzip,.elfinder-cwd-icon-x-rar,.elfinder-cwd-icon-x-rar-compressed,.elfinder-cwd-icon-x-tar,.elfinder-cwd-icon-x-xz,.elfinder-cwd-icon-x-zip,.elfinder-cwd-icon-zip{background-position:0 -1000px}.elfinder-cwd-icon-postscript{background-position:0 -1050px}.elfinder-cwd-icon-vnd-adobe-photoshop{background-position:0 -1100px}.elfinder-cwd-icon-vnd-adobe-photoshop:before{content:none!important}.elfinder-cwd-icon-x-shockwave-flash{background-position:0 -1150px}.elfinder-cwd-icon-vnd-android-package-archive{background-position:0 -1200px}.elfinder-cwd-icon-vnd-android-package-archive:before{content:none!important}.elfinder-cwd-icon-x-c,.elfinder-cwd-icon-x-c--,.elfinder-cwd-icon-x-c--hdr,.elfinder-cwd-icon-x-c--src,.elfinder-cwd-icon-x-chdr,.elfinder-cwd-icon-x-csrc{background-position:0 -1250px}.elfinder-cwd-icon-css{background-position:0 -1300px}.elfinder-cwd-icon-html{background-position:0 -1350px}.elfinder-cwd-icon-x-jar,.elfinder-cwd-icon-x-java,.elfinder-cwd-icon-x-java-source{background-position:0 -1400px}.elfinder-cwd-icon-x-jar:before,.elfinder-cwd-icon-x-java-source:before,.elfinder-cwd-icon-x-java:before{content:none!important}.elfinder-cwd-icon-javascript,.elfinder-cwd-icon-x-javascript{background-position:0 -1450px}.elfinder-cwd-icon-json{background-position:0 -1500px}.elfinder-cwd-icon-json:before{content:none!important}.elfinder-cwd-icon-markdown,.elfinder-cwd-icon-x-markdown{background-position:0 -1550px}.elfinder-cwd-icon-markdown:before,.elfinder-cwd-icon-x-markdown:before{content:none!important}.elfinder-cwd-icon-x-perl{background-position:0 -1600px}.elfinder-cwd-icon-x-php{background-position:0 -1650px}.elfinder-cwd-icon-x-python,.elfinder-cwd-icon-x-python:after{background-position:0 -1700px}.elfinder-cwd-icon-x-ruby{background-position:0 -1750px}.elfinder-cwd-icon-x-sh,.elfinder-cwd-icon-x-shellscript{background-position:0 -1800px}.elfinder-cwd-icon-sql,.elfinder-cwd-icon-x-sql,.elfinder-cwd-icon-x-sqlite3{background-position:0 -1850px}.elfinder-cwd-icon-svg,.elfinder-cwd-icon-svg-xml,.elfinder-cwd-icon-x-eps{background-position:0 -1900px}.elfinder-cwd-icon-xml,.elfinder-cwd-icon-xml:after{background-position:0 -1950px}.elfinder-cwd-icon-x-zip:before,.elfinder-cwd-icon-zip:before{content:'zip'!important}.elfinder-cwd-icon-x-xz:before{content:'xz'!important}.elfinder-cwd-icon-x-7z-compressed:before{content:'7z'!important}.elfinder-cwd-icon-x-gzip:before{content:'gzip'!important}.elfinder-cwd-icon-x-tar:before{content:'tar'!important}.elfinder-cwd-icon-x-bzip2:before,.elfinder-cwd-icon-x-bzip:before{content:'bzip'!important}.elfinder-cwd-icon-x-rar-compressed:before,.elfinder-cwd-icon-x-rar:before{content:'rar'!important}.elfinder-toolbar{background:#3b4047;-webkit-border-radius:0;border-radius:0;border:0;padding:5px 0}.elfinder-toolbar .elfinder-button-icon{font-size:20px;color:#ddd;margin-top:-2px}.elfinder-buttonset{-webkit-border-radius:0;border-radius:0;border:0;margin:0 5px;height:24px}.elfinder .elfinder-button{background:transparent;-webkit-border-radius:0;border-radius:0;cursor:pointer;color:#efefef}.elfinder-toolbar-button-separator{border:0}.elfinder-button-menu{-webkit-border-radius:2px;border-radius:2px;-webkit-box-shadow:0 1px 6px rgba(0, 0, 0, 0.3);box-shadow:0 1px 6px rgba(0, 0, 0, 0.3);border:none;margin-top:5px}.elfinder-button-menu-item{color:#666;padding:6px 19px}.elfinder-button-menu-item.ui-state-hover{color:#141414;background-color:#f5f4f4}.elfinder-button-menu-item-separated{border-top:1px solid #e5e5e5}.elfinder-button-menu-item-separated.ui-state-hover{border-top:1px solid #e5e5e5}.elfinder .elfinder-button-search{margin:0 10px;min-height:inherit;overflow:hidden}.elfinder .elfinder-button-search .ui-icon{color:#fff!important}.elfinder .elfinder-button-search input{background:rgba(40, 42, 45, 0.79);-webkit-border-radius:2px;border-radius:2px;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;border:0;margin:0;padding:0 23px;height:24px!important;color:#fff}.elfinder .elfinder-button-search .elfinder-button-menu{margin-top:4px;border:none;-webkit-box-shadow:0 1px 3px rgba(0, 0, 0, 0.5);box-shadow:0 1px 3px rgba(0, 0, 0, 0.5)}.elfinder .elfinder-button-search-menu{-webkit-border-radius:0;border-radius:0;top:30px!important}.elfinder .elfinder-button-search-menu .ui-button{padding:0.4em 1em!important}.elfinder .elfinder-navbar{background:#535e64;-webkit-box-shadow:0 1px 8px rgba(0, 0, 0, 0.6);box-shadow:0 1px 8px rgba(0, 0, 0, 0.6);border:none}.elfinder .elfinder-navbar .elfinder-lock,.elfinder .elfinder-navbar .elfinder-perms,.elfinder .elfinder-navbar .elfinder-symlink{color:#1d1d1d;opacity:0.8}.elfinder-navbar-dir{color:#e6e6e6;cursor:pointer;-webkit-border-radius:2px;border-radius:2px;padding:5px;border:none}.elfinder-navbar-dir .elfinder-navbar-icon{color:#fff}.elfinder-navbar-dir.ui-state-active.ui-state-hover,.elfinder-navbar-dir.ui-state-hover{background:#3c4448;color:#e6e6e6;border:none}.elfinder-navbar-dir.ui-state-active.ui-state-hover .elfinder-navbar-icon,.elfinder-navbar-dir.ui-state-hover .elfinder-navbar-icon{color:#fff}.elfinder-disabled .elfinder-navbar .ui-state-active,.elfinder-navbar .ui-state-active{background:#41494e;color:#e8e8e8!important;border:none}.elfinder-disabled .elfinder-navbar .ui-state-active.elfinder-navbar-dir .elfinder-navbar-icon,.elfinder-navbar .ui-state-active.elfinder-navbar-dir .elfinder-navbar-icon{color:#e8e8e8!important}.elfinder-workzone{background:#cdcfd4}.elfinder-cwd-file{color:#555}.elfinder-cwd-file.ui-selected.ui-state-hover,.elfinder-cwd-file.ui-state-hover{background:#4c5961;color:#ddd}.elfinder-cwd-file.ui-selected{background:#455158;color:#555}.elfinder-cwd-filename input,.elfinder-cwd-filename textarea{padding:2px;-webkit-border-radius:2px!important;border-radius:2px!important;background:#fff;color:#222}.elfinder-cwd-filename input:focus,.elfinder-cwd-filename textarea:focus{outline:none;border:1px solid #555}.elfinder-cwd-view-icons .elfinder-cwd-file .elfinder-cwd-filename.ui-state-hover,.elfinder-cwd-view-icons .elfinder-cwd-file .ui-state-active,.elfinder-cwd-view-icons .elfinder-cwd-file .ui-state-hover,.elfinder-disabled .elfinder-cwd-view-icons .elfinder-cwd-file .elfinder-cwd-filename.ui-state-hover,.elfinder-disabled .elfinder-cwd table td.ui-state-hover{background:transparent;color:#ddd}.elfinder-cwd table{padding:0}.elfinder-cwd table thead td{padding:5px 14px}.elfinder-cwd table tr{border:0!important}.elfinder-cwd table tr:nth-child(odd){background-color:transparent}.elfinder-cwd table tr:nth-child(odd).ui-state-hover{background-color:#4c5961}.elfinder-cwd.elfinder-table-header-sticky table{border:0}.elfinder-cwd .elfinder-lock,.elfinder-cwd .elfinder-perms,.elfinder-cwd .elfinder-symlink{color:#4d4d4d}.elfinder-cwd-view-icons .elfinder-lock{top:0}.elfinder-cwd-view-list thead td .ui-resizable-handle{top:3px}.elfinder-cwd-view-list .elfinder-lock,.elfinder-cwd-view-list .elfinder-perms,.elfinder-cwd-view-list .elfinder-symlink{font-size:14px;opacity:0.7}.elfinder-cwd-view-list .elfinder-perms{left:inherit}#elfinder-elfinder-cwd-thead td{background:#353b42;color:#ddd}#elfinder-elfinder-cwd-thead td.ui-state-active,#elfinder-elfinder-cwd-thead td.ui-state-hover{background:#2a2e34}#elfinder-elfinder-cwd-thead td.ui-state-active.ui-state-hover{background:#2e333a}.elfinder .ui-selectable-helper{border:1px solid #3b4047;background-color:rgba(104, 111, 121, 0.5)}.elfinder-cwd-wrapper.elfinder-cwd-wrapper-trash{background-color:#e4e4e4}.elfinder-cwd-wrapper.elfinder-cwd-wrapper-trash .elfinder-cwd-file{color:#333}.elfinder-cwd-wrapper.elfinder-cwd-wrapper-trash .elfinder-cwd-file.ui-selected.ui-state-hover,.elfinder-cwd-wrapper.elfinder-cwd-wrapper-trash .elfinder-cwd-file.ui-state-hover{background:#4c5961;color:#ddd}.elfinder-cwd-wrapper.elfinder-cwd-wrapper-trash .elfinder-cwd-file.ui-selected{background:#455158;color:#555}.elfinder-info-title .elfinder-cwd-icon:before{top:32px;display:block;margin:0 auto}.elfinder-info-title .elfinder-cwd-icon.elfinder-cwd-bgurl:before{background-color:#313131!important}.elfinder-cwd-view-icons .elfinder-cwd-icon.elfinder-cwd-bgurl:before{left:inherit;background-color:#313131}.elfinder-cwd-icon:before,.elfinder-cwd-size1 .elfinder-cwd-icon.elfinder-cwd-bgurl:before,.elfinder-cwd-size1 .elfinder-cwd-icon:before,.elfinder-cwd-size2 .elfinder-cwd-icon.elfinder-cwd-bgurl:before,.elfinder-cwd-size2 .elfinder-cwd-icon:before,.elfinder-cwd-size3 .elfinder-cwd-icon.elfinder-cwd-bgurl:before,.elfinder-cwd-size3 .elfinder-cwd-icon:before,.elfinder-quicklook .elfinder-cwd-icon:before{top:35px;left:50%!important;position:relative!important;display:block!important;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%);max-width:52px;color:#fff}.elfinder .elfinder-cwd-view-icons .elfinder-cwd-bgurl:after,.elfinder .elfinder-quicklook-info-wrapper .elfinder-cwd-bgurl:after{display:none}.elfinder-cwd-size1 .elfinder-cwd-icon.elfinder-cwd-bgurl:before{top:53px;-webkit-transform:scale(1.32) translateX(-50%);-ms-transform:scale(1.32) translateX(-50%);transform:scale(1.32) translateX(-50%)}.elfinder-cwd-size2 .elfinder-cwd-icon.elfinder-cwd-bgurl:before{top:74px;-webkit-transform:scale(1.53) translateX(-50%);-ms-transform:scale(1.53) translateX(-50%);transform:scale(1.53) translateX(-50%)}.elfinder-cwd-size3 .elfinder-cwd-icon.elfinder-cwd-bgurl:before{top:87px;-webkit-transform:scale(2.22) translateX(-50%);-ms-transform:scale(2.22) translateX(-50%);transform:scale(2.22) translateX(-50%)}.elfinder .elfinder-statusbar{background:#3b4047;-webkit-border-radius:0;border-radius:0;border:0;color:#cfd2d4}.elfinder-path,.elfinder-stat-size{margin:0 15px}.elfinder input,.elfinder select{padding:4px;color:#666;background:#fff;-webkit-border-radius:3px;border-radius:3px;font-weight:normal;border-color:#888;-webkit-box-shadow:none!important;box-shadow:none!important}.elfinder input.ui-state-hover,.elfinder select.ui-state-hover{background:#fff!important;color:#666!important}.elfinder input[type=checkbox]{position:relative;height:initial}.elfinder input[type=checkbox]:after,.elfinder input[type=checkbox]:focus:after{content:"";display:block;width:12px;height:12px;border:1px solid #707070;background-color:#fff;-webkit-border-radius:2px;border-radius:2px}.elfinder input[type=checkbox]:checked:before{content:"";position:absolute;top:-3px;left:6px;display:table;width:4px;height:12px;border:2px solid #707070;border-top-width:0;border-left-width:0;-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.elfinder .ui-button,.elfinder .ui-button.ui-state-default,.elfinder .ui-button:active{display:inline-block;font-weight:normal;text-align:center;vertical-align:middle;cursor:pointer;white-space:nowrap;-webkit-border-radius:3px;border-radius:3px;text-transform:uppercase;-webkit-box-shadow:1px 1px 4px rgba(0, 0, 0, 0.4)!important;box-shadow:1px 1px 4px rgba(0, 0, 0, 0.4)!important;-webkit-transition:all 0.4s;-o-transition:all 0.4s;transition:all 0.4s;background:#fff;color:#222;border:none;padding:7px 6px}.elfinder .ui-button .ui-icon,.elfinder .ui-button.ui-state-default .ui-icon,.elfinder .ui-button:active .ui-icon{color:#222}.elfinder .ui-button.ui-state-active,.elfinder .ui-button.ui-state-hover,.elfinder .ui-button:active,.elfinder .ui-button:focus,.elfinder .ui-button:hover,.elfinder a.ui-button:active{background:#3498db!important;color:#fff!important;border:none}.elfinder .ui-button.ui-state-active .ui-icon,.elfinder .ui-button.ui-state-hover .ui-icon,.elfinder .ui-button:active .ui-icon,.elfinder .ui-button:focus .ui-icon,.elfinder .ui-button:hover .ui-icon,.elfinder a.ui-button:active .ui-icon{color:#fff}.elfinder .ui-button.ui-state-active:hover{background:#217dbb;color:#fff;border:none}.elfinder .ui-button:focus{outline:none!important}.elfinder .ui-controlgroup-horizontal .ui-button{-webkit-border-radius:0;border-radius:0;border:0}.elfinder .elfinder-resize-preset-container .ui-button,.elfinder input:not([type=checkbox]){height:21px}.elfinder .elfinder-contextmenu,.elfinder .elfinder-contextmenu-sub{-webkit-border-radius:2px;border-radius:2px;-webkit-box-shadow:0 1px 6px rgba(0, 0, 0, 0.3);box-shadow:0 1px 6px rgba(0, 0, 0, 0.3);border:none}.elfinder .elfinder-contextmenu-separator,.elfinder .elfinder-contextmenu-sub-separator{border-top:1px solid #e5e5e5}.elfinder .elfinder-contextmenu-item{color:#666;padding:5px 30px}.elfinder .elfinder-contextmenu-item.ui-state-hover{background-color:#f5f4f4;color:#141414}.elfinder .elfinder-contextmenu-item.ui-state-active{background-color:#2196f3;color:#fff}.elfinder .elfinder-dialog{-webkit-border-radius:0;border-radius:0;border:0;-webkit-box-shadow:0 1px 30px rgba(0, 0, 0, 0.6);box-shadow:0 1px 30px rgba(0, 0, 0, 0.6)}.elfinder .elfinder-dialog .ui-dialog-content[id*=edit-elfinder-elfinder-]{padding:0}.elfinder .elfinder-dialog .ui-tabs{-webkit-border-radius:0;border-radius:0;border:0;padding:0}.elfinder .elfinder-dialog .ui-tabs-nav{-webkit-border-radius:0;border-radius:0;border:0;background:transparent;border-bottom:1px solid #ddd}.elfinder .elfinder-dialog .ui-tabs-nav li{border:0;font-weight:normal;background:transparent;margin:0;padding:0}.elfinder .elfinder-dialog .ui-tabs-nav li a{padding:7px 9px}.elfinder .elfinder-dialog .ui-tabs-nav .ui-state-active a,.elfinder .elfinder-dialog .ui-tabs-nav .ui-tabs-selected a,.elfinder .elfinder-dialog .ui-tabs-nav li:hover a{-webkit-box-shadow:inset 0 -2px 0 #3498db;box-shadow:inset 0 -2px 0 #3498db;color:#3498db}.elfinder .elfinder-dialog .ui-tabs .elfinder-tabstop.ui-state-hover{background:transparent;-webkit-box-shadow:inset 0 -2px 0 #3498db;box-shadow:inset 0 -2px 0 #3498db;color:#3498db}.elfinder .elfinder-dialog label.ui-state-hover{background:transparent}.elfinder .elfinder-dialog .ui-resizable-se{display:none}.std42-dialog .ui-dialog-titlebar{background:#353b44;-webkit-border-radius:0;border-radius:0;border:0}.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-button .ui-icon{border-color:inherit;-webkit-transition:0.2s ease-out;-o-transition:0.2s ease-out;transition:0.2s ease-out;opacity:0.8;color:#fff;width:auto;height:auto;font-size:12px;padding:3px}.std42-dialog,.std42-dialog.elfinder-bg-translucent,.std42-dialog.elfinder-bg-translucent .ui-widget-content,.std42-dialog .ui-dialog-content{background-color:#fff}.std42-dialog .ui-dialog-buttonpane button{margin:-1px 2px 2px;padding:7px 6px}.std42-dialog .ui-dialog-buttonpane button span.ui-icon{padding:0}.std42-dialog .ui-dialog-buttonpane .ui-dialog-buttonset.elfinder-edit-extras select{margin-top:0}.std42-dialog,.std42-dialog .ui-widget-content{background-color:#fff}.elfinder-mobile .std42-dialog .ui-dialog-titlebar .ui-dialog-titlebar-close .ui-icon,.std42-dialog .ui-dialog-titlebar .ui-dialog-titlebar-close:hover .ui-icon{background-color:#f44336}.elfinder-mobile .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-full .ui-icon,.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-full:hover .ui-icon{background-color:#4caf50}.elfinder-mobile .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-minimize .ui-icon,.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-minimize:hover .ui-icon{background-color:#ff9800}.elfinder-dialog-title{color:#f1f1f1}.elfinder .ui-widget-content{font-family:"Noto Sans", sans-serif;color:#546e7a}.elfinder-upload-dialog-wrapper .elfinder-upload-dirselect{width:inherit;height:inherit;padding:7px;margin-left:5px;color:#222;-webkit-box-shadow:1px 1px 4px rgba(0, 0, 0, 0.4);box-shadow:1px 1px 4px rgba(0, 0, 0, 0.4);background:#fff;bottom:4px;-webkit-border-radius:2px;border-radius:2px}.elfinder-upload-dialog-wrapper .elfinder-upload-dirselect.ui-state-hover{background:#3498db!important;color:#fff!important;outline:none}.elfinder-upload-dialog-wrapper .ui-button{padding:0.4em 3px;margin:0 -15px 0 19px}.elfinder-upload-dropbox{border:2px dashed #bbb}.elfinder-upload-dropbox:focus{outline:none}.elfinder-upload-dropbox.ui-state-hover{background:#f1f1f1;border:2px dashed #bbb}.elfinder-dialog-resize .elfinder-resize-control-panel{margin-left:-5px}.elfinder-dialog-resize .elfinder-resize-control-panel .ui-button{height:inherit;margin-bottom:5px}.elfinder-help *{color:#546e7a}.elfinder-help a{color:#3498db}.elfinder-help a:hover{color:#217dbb}.elfinder .ui-slider.ui-slider-horizontal{height:2px;border:0;background-color:#bababa!important}.elfinder .ui-slider .ui-slider-handle{background-image:none;background-color:#5d5858;-webkit-border-radius:50%;border-radius:50%;border:0;margin-top:-3px}.elfinder .ui-slider .ui-slider-handle.ui-state-hover{background:#5d5858!important;-webkit-box-shadow:none!important;box-shadow:none!important;-webkit-border-radius:50%;border-radius:50%;cursor:pointer}.elfinder-quicklook{background:#232323;-webkit-border-radius:2px;border-radius:2px}.elfinder-quicklook-titlebar{background:inherit}.elfinder-quicklook-titlebar-icon .ui-icon{background:transparent;color:#fff}.elfinder-quicklook-fullscreen .elfinder-quicklook-navbar{border:inherit;opacity:inherit;-webkit-border-radius:4px;border-radius:4px;background:rgba(66, 66, 66, 0.73)}.elfinder .elfinder-navdock{border:0}.elfinder-mobile .elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-close,.elfinder-mobile .elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-full,.elfinder-mobile .elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-minimize,.elfinder-mobile .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-full .ui-icon,.elfinder-mobile .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-minimize .ui-icon,.elfinder-mobile .std42-dialog .ui-dialog-titlebar .ui-dialog-titlebar-close .ui-icon,.elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-close:hover,.elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-full:hover,.elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-minimize:hover,.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-full:hover .ui-icon,.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-minimize:hover .ui-icon,.std42-dialog .ui-dialog-titlebar .ui-dialog-titlebar-close:hover .ui-icon{background-image:none}
/*!
 * elFinder-Material-Theme (Light) v2.1.9 (https://github.com/RobiNN1/elFinder-Material-Theme)
 * Copyright 2016-2019 Róbert Kelčák {RobiNN}
 * Licensed under MIT (https://github.com/RobiNN1/elFinder-Material-Theme/blob/master/LICENSE)
 */
@import url("https://fonts.googleapis.com/css?family=Noto+Sans:400,400i,700,700i&subset=cyrillic,cyrillic-ext,devanagari,greek,greek-ext,latin-ext,vietnamese");
.elfinder {
  color: #546e7a;
  font-family: "Noto Sans", sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}
.elfinder.ui-widget.ui-widget-content {
  font-family: "Noto Sans", sans-serif;
  -webkit-box-shadow: 0 1px 8px rgba(0, 0, 0, 0.6);
  box-shadow: 0 1px 8px rgba(0, 0, 0, 0.6);
  -webkit-border-radius: 0;
  border-radius: 0;
  border: 0;
}
.elfinder * {
  outline: 0 !important;
}
/**
 * Loading
 */
.elfinder-info-spinner,
.elfinder-navbar-spinner,
.elfinder-button-icon-spinner {
  background: url("../images/loading.svg") center center no-repeat !important;
  width: 16px;
  height: 16px;
}
/**
 * Progress Bar
 */
@-webkit-keyframes progress-animation {
  from {
    background-position: 1rem 0;
  }
  to {
    background-position: 0 0;
  }
}
@keyframes progress-animation {
  from {
    background-position: 1rem 0;
  }
  to {
    background-position: 0 0;
  }
}
.elfinder-notify-progressbar {
  border: 0;
}
.elfinder-notify-progress,
.elfinder-notify-progressbar {
  -webkit-border-radius: 0;
  border-radius: 0;
}
.elfinder-notify-progress,
.elfinder-resize-spinner {
  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: 1rem 1rem;
  background-size: 1rem 1rem;
  -webkit-animation: progress-animation 1s linear infinite;
  animation: progress-animation 1s linear infinite;
  background-color: #0275d8;
  height: 1rem;
}
/**
 * Toast Notification
 */
.elfinder .elfinder-toast > div {
  background-color: #323232 !important;
  color: #d6d6d6;
  -webkit-box-shadow: none;
  box-shadow: none;
  opacity: inherit;
  padding: 10px 60px;
}
.elfinder .elfinder-toast > div button.ui-button {
  color: #fff;
}
.elfinder .elfinder-toast > .toast-info button.ui-button {
  background-color: #3498db;
}
.elfinder .elfinder-toast > .toast-error button.ui-button {
  background-color: #f44336;
}
.elfinder .elfinder-toast > .toast-success button.ui-button {
  background-color: #4caf50;
}
.elfinder .elfinder-toast > .toast-warning button.ui-button {
  background-color: #ff9800;
}
.elfinder-toast-msg {
  font-family: "Noto Sans", sans-serif;
  font-size: 17px;
}
/**
 * For Ace Editor
 */
#ace_settingsmenu {
  font-family: "Noto Sans", sans-serif;
  -webkit-box-shadow: 0 1px 30px rgba(0, 0, 0, 0.6) !important;
  box-shadow: 0 1px 30px rgba(0, 0, 0, 0.6) !important;
  background-color: #1d2736 !important;
  color: #e6e6e6 !important;
}
#ace_settingsmenu,
#kbshortcutmenu {
  padding: 0;
}
.ace_optionsMenuEntry {
  padding: 5px 10px;
}
.ace_optionsMenuEntry:hover {
  background-color: #111721;
}
.ace_optionsMenuEntry label {
  font-size: 13px;
}
#ace_settingsmenu input[type="text"],
#ace_settingsmenu select {
  margin: 1px 2px 2px;
  padding: 2px 5px;
  -webkit-border-radius: 3px;
  border-radius: 3px;
  border: 0;
  background: rgba(9, 53, 121, 0.75);
  color: white !important;
}
/**
 * Icons
 */
@font-face {
  font-family: material;
  src: url("../icons/material.eot?91804974");
  src: url("../icons/material.eot?91804974#iefix") format("embedded-opentype"), url("../icons/material.woff2?91804974") format("woff2"), url("../icons/material.woff?91804974") format("woff"), url("../icons/material.ttf?91804974") format("truetype"), url("../icons/material.svg?91804974#material") format("svg");
  font-weight: normal;
  font-style: normal;
}
@media screen and (-webkit-min-device-pixel-ratio: 0) {
  @font-face {
    font-family: material;
    src: url("../icons/material.svg?91804974#material") format("svg");
  }
}
.elfinder .ui-icon,
.elfinder-button-icon,
.ui-widget-header .ui-icon,
.ui-widget-content .ui-icon {
  font: normal normal normal 14px/1 material;
  background-image: inherit;
  text-indent: inherit;
}
.elfinder .ui-button-icon-only .ui-icon {
  font: normal normal normal 14px/1 material;
  background-image: inherit !important;
  text-indent: 0;
  font-size: 16px;
}
.elfinder-button-icon {
  background: inherit;
}
.elfinder-button-icon-home:before {
  content: '\e800';
}
.elfinder-button-icon-back:before {
  content: '\e801';
}
.elfinder-button-icon-forward:before {
  content: '\e802';
}
.elfinder-button-icon-up:before {
  content: '\e803';
}
.elfinder-button-icon-dir:before {
  content: '\e804';
}
.elfinder-button-icon-opendir:before {
  content: '\e805';
}
.elfinder-button-icon-reload:before {
  content: '\e806';
}
.elfinder-button-icon-open:before {
  content: '\e807';
}
.elfinder-button-icon-mkdir:before {
  content: '\e808';
}
.elfinder-button-icon-mkfile:before {
  content: '\e809';
}
.elfinder-button-icon-rm:before {
  content: '\e80a';
}
.elfinder-button-icon-trash:before {
  content: '\e80b';
}
.elfinder-button-icon-restore:before {
  content: '\e80c';
}
.elfinder-button-icon-copy:before {
  content: '\e80d';
}
.elfinder-button-icon-cut:before {
  content: '\e80e';
}
.elfinder-button-icon-paste:before {
  content: '\e80f';
}
.elfinder-button-icon-getfile:before {
  content: '\e810';
}
.elfinder-button-icon-duplicate:before {
  content: '\e811';
}
.elfinder-button-icon-rename:before {
  content: '\e812';
}
.elfinder-button-icon-edit:before {
  content: '\e813';
}
.elfinder-button-icon-quicklook:before {
  content: '\e814';
}
.elfinder-button-icon-upload:before {
  content: '\e815';
}
.elfinder-button-icon-download:before {
  content: '\e816';
}
.elfinder-button-icon-info:before {
  content: '\e817';
}
.elfinder-button-icon-extract:before {
  content: '\e818';
}
.elfinder-button-icon-archive:before {
  content: '\e819';
}
.elfinder-button-icon-view:before {
  content: '\e81a';
}
.elfinder-button-icon-view-list:before {
  content: '\e81b';
}
.elfinder-button-icon-help:before {
  content: '\e81c';
}
.elfinder-button-icon-resize:before {
  content: '\e81d';
}
.elfinder-button-icon-link:before {
  content: '\e81e';
}
.elfinder-button-icon-search:before {
  content: '\e81f';
}
.elfinder-button-icon-sort:before {
  content: '\e820';
}
.elfinder-button-icon-rotate-r:before {
  content: '\e821';
}
.elfinder-button-icon-rotate-l:before {
  content: '\e822';
}
.elfinder-button-icon-netmount:before {
  content: '\e823';
}
.elfinder-button-icon-netunmount:before {
  content: '\e824';
}
.elfinder-button-icon-places:before {
  content: '\e825';
}
.elfinder-button-icon-chmod:before {
  content: '\e826';
}
.elfinder-button-icon-accept:before {
  content: '\e827';
}
.elfinder-button-icon-menu:before {
  content: '\e828';
}
.elfinder-button-icon-colwidth:before {
  content: '\e829';
}
.elfinder-button-icon-fullscreen:before {
  content: '\e82a';
}
.elfinder-button-icon-unfullscreen:before {
  content: '\e82b';
}
.elfinder-button-icon-empty:before {
  content: '\e82c';
}
.elfinder-button-icon-undo:before {
  content: '\e82d';
}
.elfinder-button-icon-redo:before {
  content: '\e82e';
}
.elfinder-button-icon-preference:before {
  content: '\e82f';
}
.elfinder-button-icon-mkdirin:before {
  content: '\e830';
}
.elfinder-button-icon-selectall:before {
  content: '\e831';
}
.elfinder-button-icon-selectnone:before {
  content: '\e832';
}
.elfinder-button-icon-selectinvert:before {
  content: '\e833';
}
.elfinder-button-icon-logout:before {
  content: '\e85a';
}
.elfinder-button-icon-opennew:before {
  content: '\e85b';
}
.elfinder-button-icon-hide:before {
  content: '\e85d';
}
.elfinder-button-search .ui-icon.ui-icon-search {
  font-size: 17px;
}
.elfinder-button-search .ui-icon:hover {
  opacity: 1;
}
.elfinder-navbar-icon {
  font: normal normal normal 16px/1 material;
  background-image: inherit !important;
}
.elfinder-navbar-icon:before {
  content: '\e804';
}
.elfinder-droppable-active .elfinder-navbar-icon:before,
.elfinder .ui-state-active .elfinder-navbar-icon:before,
.elfinder .ui-state-hover .elfinder-navbar-icon:before {
  content: '\e805';
}
.elfinder-navbar-root-local .elfinder-navbar-icon:before {
  content: '\e83d' !important;
}
.elfinder-navbar-root-ftp .elfinder-navbar-icon:before {
  content: '\e823' !important;
}
.elfinder-navbar-root-sql .elfinder-navbar-icon:before {
  content: '\e83e' !important;
}
.elfinder-navbar-root-dropbox .elfinder-navbar-icon:before {
  content: '\e83f' !important;
}
.elfinder-navbar-root-googledrive .elfinder-navbar-icon:before {
  content: '\e840' !important;
}
.elfinder-navbar-root-onedrive .elfinder-navbar-icon:before {
  content: '\e841' !important;
}
.elfinder-navbar-root-box .elfinder-navbar-icon:before {
  content: '\e842' !important;
}
.elfinder-navbar-root-trash .elfinder-navbar-icon:before {
  content: '\e80b' !important;
}
.elfinder-navbar-root-zip .elfinder-navbar-icon:before {
  content: '\e85c' !important;
}
.elfinder-navbar-root-network .elfinder-navbar-icon:before {
  content: '\e823' !important;
}
.elfinder-places .elfinder-navbar-root .elfinder-navbar-icon:before {
  content: '\e825' !important;
}
.elfinder-navbar-arrow {
  background-image: inherit !important;
  font: normal normal normal 14px/1 material;
  font-size: 10px;
  padding-top: 3px;
  padding-left: 2px;
  color: #a9a9a9;
}
.elfinder .ui-state-active .elfinder-navbar-arrow {
  color: #fff;
}
.elfinder-ltr .elfinder-navbar-collapsed .elfinder-navbar-arrow:before {
  content: '\e857';
}
.elfinder-rtl .elfinder-navbar-collapsed .elfinder-navbar-arrow:before {
  content: '\e858';
}
.elfinder-ltr .elfinder-navbar-expanded .elfinder-navbar-arrow:before,
.elfinder-rtl .elfinder-navbar-expanded .elfinder-navbar-arrow:before {
  content: '\e851';
}
div.elfinder-cwd-wrapper-list tr.ui-state-default td span.ui-icon {
  font-size: 8px;
  margin-top: 5px;
  margin-right: 5px;
}
div.elfinder-cwd-wrapper-list .ui-icon-grip-dotted-vertical {
  margin: 2px;
}
.elfinder-cwd-view-list .elfinder-navbar-root-local td .elfinder-cwd-icon,
.elfinder-navbar-root-local .elfinder-cwd-icon,
.elfinder-cwd-view-list .elfinder-navbar-root-ftp td .elfinder-cwd-icon,
.elfinder-navbar-root-ftp .elfinder-cwd-icon,
.elfinder-cwd-view-list .elfinder-navbar-root-sql td .elfinder-cwd-icon,
.elfinder-navbar-root-sql .elfinder-cwd-icon,
.elfinder-cwd-view-list .elfinder-navbar-root-dropbox td .elfinder-cwd-icon,
.elfinder-navbar-root-dropbox .elfinder-cwd-icon,
.elfinder-cwd-view-list .elfinder-navbar-root-googledrive td .elfinder-cwd-icon,
.elfinder-navbar-root-googledrive .elfinder-cwd-icon,
.elfinder-cwd-view-list .elfinder-navbar-root-onedrive td .elfinder-cwd-icon,
.elfinder-navbar-root-onedrive .elfinder-cwd-icon,
.elfinder-cwd-view-list .elfinder-navbar-root-box td .elfinder-cwd-icon,
.elfinder-navbar-root-box .elfinder-cwd-icon,
.elfinder-cwd-view-list .elfinder-navbar-root-trash td .elfinder-cwd-icon,
.elfinder-navbar-root-trash .elfinder-cwd-icon,
.elfinder-cwd-view-list .elfinder-navbar-root-zip td .elfinder-cwd-icon,
.elfinder-navbar-root-zip .elfinder-cwd-icon,
.elfinder-cwd-view-list .elfinder-navbar-root-network td .elfinder-cwd-icon,
.elfinder-navbar-root-network .elfinder-cwd-icon {
  background-image: inherit;
}
.elfinder-cwd-view-list .elfinder-navbar-root-local td .elfinder-cwd-icon:before,
.elfinder-navbar-root-local .elfinder-cwd-icon:before,
.elfinder-cwd-view-list .elfinder-navbar-root-ftp td .elfinder-cwd-icon:before,
.elfinder-navbar-root-ftp .elfinder-cwd-icon:before,
.elfinder-cwd-view-list .elfinder-navbar-root-sql td .elfinder-cwd-icon:before,
.elfinder-navbar-root-sql .elfinder-cwd-icon:before,
.elfinder-cwd-view-list .elfinder-navbar-root-dropbox td .elfinder-cwd-icon:before,
.elfinder-navbar-root-dropbox .elfinder-cwd-icon:before,
.elfinder-cwd-view-list .elfinder-navbar-root-googledrive td .elfinder-cwd-icon:before,
.elfinder-navbar-root-googledrive .elfinder-cwd-icon:before,
.elfinder-cwd-view-list .elfinder-navbar-root-onedrive td .elfinder-cwd-icon:before,
.elfinder-navbar-root-onedrive .elfinder-cwd-icon:before,
.elfinder-cwd-view-list .elfinder-navbar-root-box td .elfinder-cwd-icon:before,
.elfinder-navbar-root-box .elfinder-cwd-icon:before,
.elfinder-cwd-view-list .elfinder-navbar-root-trash td .elfinder-cwd-icon:before,
.elfinder-navbar-root-trash .elfinder-cwd-icon:before,
.elfinder-cwd-view-list .elfinder-navbar-root-zip td .elfinder-cwd-icon:before,
.elfinder-navbar-root-zip .elfinder-cwd-icon:before,
.elfinder-cwd-view-list .elfinder-navbar-root-network td .elfinder-cwd-icon:before,
.elfinder-navbar-root-network .elfinder-cwd-icon:before {
  font-family: material;
  background-color: transparent;
  color: #525252;
  font-size: 55px;
  position: relative;
  top: -10px !important;
  padding: 0;
  display: contents !important;
}
.elfinder-cwd-view-list .elfinder-navbar-root-local td .elfinder-cwd-icon:before,
.elfinder-navbar-root-local .elfinder-cwd-icon:before {
  content: '\e83d';
}
.elfinder-cwd-view-list .elfinder-navbar-root-ftp td .elfinder-cwd-icon:before,
.elfinder-navbar-root-ftp .elfinder-cwd-icon:before {
  content: '\e823';
}
.elfinder-cwd-view-list .elfinder-navbar-root-sql td .elfinder-cwd-icon:before,
.elfinder-navbar-root-sql .elfinder-cwd-icon:before {
  content: '\e83e';
}
.elfinder-cwd-view-list .elfinder-navbar-roor-dropbox td .elfinder-cwd-icon:before,
.elfinder-navbar-roor-dropbox .elfinder-cwd-icon:before {
  content: '\e83f';
}
.elfinder-cwd-view-list .elfinder-navbar-roor-googledrive td .elfinder-cwd-icon:before,
.elfinder-navbar-roor-googledrive .elfinder-cwd-icon:before {
  content: '\e840';
}
.elfinder-cwd-view-list .elfinder-navbar-roor-onedrive td .elfinder-cwd-icon:before,
.elfinder-navbar-roor-onedrive .elfinder-cwd-icon:before {
  content: '\e841';
}
.elfinder-cwd-view-list .elfinder-navbar-roor-box td .elfinder-cwd-icon:before,
.elfinder-navbar-roor-box .elfinder-cwd-icon:before {
  content: '\e842';
}
.elfinder-cwd-view-list .elfinder-navbar-root-trash td .elfinder-cwd-icon:before,
.elfinder-navbar-root-trash .elfinder-cwd-icon:before {
  content: '\e80b';
}
.elfinder-cwd-view-list .elfinder-navbar-root-zip td .elfinder-cwd-icon:before,
.elfinder-navbar-root-zip .elfinder-cwd-icon:before {
  content: '\e85c';
}
.elfinder-cwd-view-list .elfinder-navbar-root-network td .elfinder-cwd-icon:before,
.elfinder-navbar-root-network .elfinder-cwd-icon:before {
  content: '\e823';
}
.elfinder-dialog-icon {
  font: normal normal normal 14px/1 material;
  background: inherit;
  color: #524949;
  font-size: 37px;
}
.elfinder-dialog-icon:before {
  content: '\e843';
}
.elfinder-dialog-icon-mkdir:before {
  content: '\e808';
}
.elfinder-dialog-icon-mkfile:before {
  content: '\e809';
}
.elfinder-dialog-icon-copy:before {
  content: '\e80d';
}
.elfinder-dialog-icon-prepare:before,
.elfinder-dialog-icon-move:before {
  content: '\e844';
}
.elfinder-dialog-icon-upload:before,
.elfinder-dialog-icon-chunkmerge:before {
  content: '\e815';
}
.elfinder-dialog-icon-rm:before {
  content: '\e80a';
}
.elfinder-dialog-icon-open:before,
.elfinder-dialog-icon-readdir:before,
.elfinder-dialog-icon-file:before {
  content: '\e807';
}
.elfinder-dialog-icon-reload:before {
  content: '\e806';
}
.elfinder-dialog-icon-download:before {
  content: '\e816';
}
.elfinder-dialog-icon-save:before {
  content: '\e845';
}
.elfinder-dialog-icon-rename:before {
  content: '\e812';
}
.elfinder-dialog-icon-zipdl:before,
.elfinder-dialog-icon-archive:before {
  content: '\e819';
}
.elfinder-dialog-icon-extract:before {
  content: '\e818';
}
.elfinder-dialog-icon-search:before {
  content: '\e81f';
}
.elfinder-dialog-icon-loadimg:before {
  content: '\e846';
}
.elfinder-dialog-icon-url:before {
  content: '\e81e';
}
.elfinder-dialog-icon-resize:before {
  content: '\e81d';
}
.elfinder-dialog-icon-netmount:before {
  content: '\e823';
}
.elfinder-dialog-icon-netunmount:before {
  content: '\e824';
}
.elfinder-dialog-icon-chmod:before {
  content: '\e826';
}
.elfinder-dialog-icon-preupload:before,
.elfinder-dialog-icon-dim:before {
  content: '\e847';
}
.elfinder-contextmenu .elfinder-contextmenu-item span.elfinder-contextmenu-icon {
  font-size: 16px;
}
.elfinder-contextmenu .elfinder-contextmenu-item .elfinder-contextsubmenu-item .ui-icon {
  font-size: 15px;
}
.elfinder-contextmenu .elfinder-contextmenu-item .elfinder-button-icon-link:before {
  content: '\e837';
}
.elfinder .elfinder-contextmenu-extra-icon {
  margin-top: -6px;
}
.elfinder .elfinder-contextmenu-extra-icon a {
  padding: 5px;
  margin: -16px;
}
.elfinder-button-icon-link:before {
  content: '\e81e' !important;
}
.elfinder .elfinder-contextmenu-arrow {
  font: normal normal normal 14px/1 material;
  background-image: inherit;
  font-size: 10px !important;
  padding-top: 3px;
}
.elfinder .elfinder-contextmenu-arrow:before {
  content: '\e857';
}
.elfinder-contextmenu .ui-state-hover .elfinder-contextmenu-arrow {
  background-image: inherit;
}
.elfinder-quicklook .ui-resizable-se {
  background: inherit;
}
.elfinder-quicklook-navbar-icon {
  background: transparent;
  font: normal normal normal 14px/1 material;
  font-size: 32px;
  color: #fff;
}
.elfinder-quicklook-titlebar-icon {
  margin-top: -8px;
}
.elfinder-quicklook-titlebar-icon .ui-icon {
  border: 0;
  opacity: 0.8;
  font-size: 15px;
  padding: 1px;
}
.elfinder-quicklook-titlebar .ui-icon-circle-close,
.elfinder-quicklook .ui-icon-gripsmall-diagonal-se {
  color: #f1f1f1;
}
.elfinder-quicklook-navbar-icon-prev:before {
  content: '\e848';
}
.elfinder-quicklook-navbar-icon-next:before {
  content: '\e849';
}
.elfinder-quicklook-navbar-icon-fullscreen:before {
  content: '\e84a';
}
.elfinder-quicklook-navbar-icon-fullscreen-off:before {
  content: '\e84b';
}
.elfinder-quicklook-navbar-icon-close:before {
  content: '\e84c';
}
.elfinder .ui-button-icon {
  background-image: inherit;
}
.elfinder .ui-icon-search:before {
  content: '\e81f';
}
.elfinder .ui-icon-closethick:before,
.elfinder .ui-icon-close:before {
  content: '\e839';
}
.elfinder .ui-icon-circle-close:before {
  content: '\e84c';
}
.elfinder .ui-icon-gear:before {
  content: '\e82f';
}
.elfinder .ui-icon-gripsmall-diagonal-se:before {
  content: '\e838';
}
.elfinder .ui-icon-locked:before {
  content: '\e834';
}
.elfinder .ui-icon-unlocked:before {
  content: '\e836';
}
.elfinder .ui-icon-arrowrefresh-1-n:before {
  content: '\e821';
}
.elfinder .ui-icon-plusthick:before {
  content: '\e83a';
}
.elfinder .ui-icon-arrowreturnthick-1-s:before {
  content: '\e83b';
}
.elfinder .ui-icon-minusthick:before {
  content: '\e83c';
}
.elfinder .ui-icon-pin-s:before {
  content: '\e84d';
}
.elfinder .ui-icon-check:before {
  content: '\e84e';
}
.elfinder .ui-icon-arrowthick-1-s:before {
  content: '\e84f';
}
.elfinder .ui-icon-arrowthick-1-n:before {
  content: '\e850';
}
.elfinder .ui-icon-triangle-1-s:before {
  content: '\e851';
}
.elfinder .ui-icon-triangle-1-n:before {
  content: '\e852';
}
.elfinder .ui-icon-grip-dotted-vertical:before {
  content: '\e853';
}
.elfinder-lock,
.elfinder-perms,
.elfinder-symlink {
  background-image: inherit;
  font: normal normal normal 18px/1 material;
  color: #4d4d4d;
}
.elfinder-na .elfinder-perms:before {
  content: '\e824';
}
.elfinder-ro .elfinder-perms:before {
  content: '\e835';
}
.elfinder-wo .elfinder-perms:before {
  content: '\e854';
}
.elfinder-group .elfinder-perms:before {
  content: '\e800';
}
.elfinder-lock:before {
  content: '\e84d';
}
.elfinder-symlink:before {
  content: '\e837';
}
.elfinder .elfinder-toast > div {
  font: normal normal normal 14px/1 material;
}
.elfinder .elfinder-toast > div:before {
  font-size: 45px;
  position: absolute;
  left: 5px;
  top: 15px;
}
.elfinder .elfinder-toast > .toast-info,
.elfinder .elfinder-toast > .toast-error,
.elfinder .elfinder-toast > .toast-success,
.elfinder .elfinder-toast > .toast-warning {
  background-image: inherit !important;
}
.elfinder .elfinder-toast > .toast-info:before {
  content: '\e817';
  color: #3498db;
}
.elfinder .elfinder-toast > .toast-error:before {
  content: '\e855';
  color: #f44336;
}
.elfinder .elfinder-toast > .toast-success:before {
  content: '\e84e';
  color: #4caf50;
}
.elfinder .elfinder-toast > .toast-warning:before {
  content: '\e856';
  color: #ff9800;
}
.elfinder-drag-helper-icon-status {
  font: normal normal normal 14px/1 material;
  background: inherit;
}
.elfinder-drag-helper-icon-status:before {
  content: '\e824';
}
.elfinder-drag-helper-move .elfinder-drag-helper-icon-status {
  -webkit-transform: rotate(180deg);
  -ms-transform: rotate(180deg);
  transform: rotate(180deg);
}
.elfinder-drag-helper-move .elfinder-drag-helper-icon-status:before {
  content: '\e854';
}
.elfinder-drag-helper-plus .elfinder-drag-helper-icon-status {
  -webkit-transform: rotate(90deg);
  -ms-transform: rotate(90deg);
  transform: rotate(90deg);
}
.elfinder-drag-helper-plus .elfinder-drag-helper-icon-status:before {
  content: '\e84c';
}
/**
 * MIME Types
 */
.elfinder-cwd-view-list td .elfinder-cwd-icon {
  background-image: url("../images/icons-small.svg");
}
.elfinder-cwd-icon {
  background: url("../images/icons-big.svg") 0 0 no-repeat;
  -webkit-border-radius: 0;
  border-radius: 0;
}
.elfinder-cwd-icon:before {
  font-size: 10px;
  position: relative;
  top: 27px;
  left: inherit;
  padding: 1px;
  background-color: transparent;
}
.elfinder-cwd-icon-directory {
  background-position: 0 -50px;
}
.elfinder-cwd .elfinder-droppable-active .elfinder-cwd-icon {
  background-position: 0 -100px;
}
.elfinder-cwd-icon-group {
  background-position: 0 -150px;
}
.elfinder-cwd-icon-application {
  background-position: 0 -200px;
}
.elfinder-cwd-icon-rtf,
.elfinder-cwd-icon-rtfd,
.elfinder-cwd-icon-text {
  background-position: 0 -250px;
}
.elfinder-cwd-icon-image {
  background-position: 0 -300px;
}
.elfinder-cwd-icon-audio {
  background-position: 0 -350px;
}
.elfinder-cwd-icon-video,
.elfinder-cwd-icon-flash-video,
.elfinder-cwd-icon-dash-xml,
.elfinder-cwd-icon-vnd-apple-mpegurl,
.elfinder-cwd-icon-x-mpegurl {
  background-position: 0 -400px;
}
.elfinder-cwd-icon-plain,
.elfinder-cwd-icon-x-empty {
  background-position: 0 -450px;
}
.elfinder-cwd-icon-pdf {
  background-position: 0 -500px;
}
.elfinder-cwd-icon-vnd-ms-office {
  background-position: 0 -550px;
}
.elfinder-cwd-icon-x-msaccess {
  background-position: 0 -600px;
}
.elfinder-cwd-icon-x-msaccess:before {
  content: none !important;
}
.elfinder-cwd-icon-ms-excel,
.elfinder-cwd-icon-vnd-ms-excel,
.elfinder-cwd-icon-vnd-ms-excel-addin-macroEnabled-12,
.elfinder-cwd-icon-vnd-ms-excel-sheet-binary-macroEnabled-12,
.elfinder-cwd-icon-vnd-ms-excel-sheet-macroEnabled-12,
.elfinder-cwd-icon-vnd-ms-excel-template-macroEnabled-12 {
  background-position: 0 -650px;
}
.elfinder-cwd-icon-ms-excel:before,
.elfinder-cwd-icon-vnd-ms-excel:before,
.elfinder-cwd-icon-vnd-ms-excel-addin-macroEnabled-12:before,
.elfinder-cwd-icon-vnd-ms-excel-sheet-binary-macroEnabled-12:before,
.elfinder-cwd-icon-vnd-ms-excel-sheet-macroEnabled-12:before,
.elfinder-cwd-icon-vnd-ms-excel-template-macroEnabled-12:before {
  content: none !important;
}
.elfinder-cwd-icon-vnd-ms-powerpoint,
.elfinder-cwd-icon-vnd-ms-powerpoint-addin-macroEnabled-12,
.elfinder-cwd-icon-vnd-ms-powerpoint-presentation-macroEnabled-12,
.elfinder-cwd-icon-vnd-ms-powerpoint-slide-macroEnabled-12,
.elfinder-cwd-icon-vnd-ms-powerpoint-slideshow-macroEnabled-12,
.elfinder-cwd-icon-vnd-ms-powerpoint-template-macroEnabled-12 {
  background-position: 0 -700px;
}
.elfinder-cwd-icon-vnd-ms-powerpoint:before,
.elfinder-cwd-icon-vnd-ms-powerpoint-addin-macroEnabled-12:before,
.elfinder-cwd-icon-vnd-ms-powerpoint-presentation-macroEnabled-12:before,
.elfinder-cwd-icon-vnd-ms-powerpoint-slide-macroEnabled-12:before,
.elfinder-cwd-icon-vnd-ms-powerpoint-slideshow-macroEnabled-12:before,
.elfinder-cwd-icon-vnd-ms-powerpoint-template-macroEnabled-12:before {
  content: none !important;
}
.elfinder-cwd-icon-msword,
.elfinder-cwd-icon-vnd-ms-word,
.elfinder-cwd-icon-vnd-ms-word-document-macroEnabled-12,
.elfinder-cwd-icon-vnd-ms-word-template-macroEnabled-12 {
  background-position: 0 -750px;
}
.elfinder-cwd-icon-msword:before,
.elfinder-cwd-icon-vnd-ms-word:before,
.elfinder-cwd-icon-vnd-ms-word-document-macroEnabled-12:before,
.elfinder-cwd-icon-vnd-ms-word-template-macroEnabled-12:before {
  content: none !important;
}
.elfinder-cwd-icon-vnd-oasis-opendocument-base,
.elfinder-cwd-icon-vnd-oasis-opendocument-chart,
.elfinder-cwd-icon-vnd-oasis-opendocument-database,
.elfinder-cwd-icon-vnd-oasis-opendocument-formula,
.elfinder-cwd-icon-vnd-oasis-opendocument-graphics,
.elfinder-cwd-icon-vnd-oasis-opendocument-graphics-template,
.elfinder-cwd-icon-vnd-oasis-opendocument-image,
.elfinder-cwd-icon-vnd-openofficeorg-extension {
  background-position: 0 -800px;
}
.elfinder-cwd-icon-vnd-oasis-opendocument-spreadsheet,
.elfinder-cwd-icon-vnd-oasis-opendocument-spreadsheet-template,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-spreadsheetml-sheet,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-spreadsheetml-template {
  background-position: 0 -850px;
}
.elfinder-cwd-icon-vnd-oasis-opendocument-presentation,
.elfinder-cwd-icon-vnd-oasis-opendocument-presentation-template,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-presentation,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-slide,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-slideshow,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-template {
  background-position: 0 -900px;
}
.elfinder-cwd-icon-vnd-oasis-opendocument-text,
.elfinder-cwd-icon-vnd-oasis-opendocument-text-master,
.elfinder-cwd-icon-vnd-oasis-opendocument-text-template,
.elfinder-cwd-icon-vnd-oasis-opendocument-text-web,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-wordprocessingml-document,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-wordprocessingml-template {
  background-position: 0 -950px;
}
.elfinder-cwd-icon-zip,
.elfinder-cwd-icon-x-zip,
.elfinder-cwd-icon-x-xz,
.elfinder-cwd-icon-x-7z-compressed,
.elfinder-cwd-icon-x-gzip,
.elfinder-cwd-icon-x-tar,
.elfinder-cwd-icon-x-bzip,
.elfinder-cwd-icon-x-bzip2,
.elfinder-cwd-icon-x-rar,
.elfinder-cwd-icon-x-rar-compressed {
  background-position: 0 -1000px;
}
.elfinder-cwd-icon-postscript {
  background-position: 0 -1050px;
}
.elfinder-cwd-icon-vnd-adobe-photoshop {
  background-position: 0 -1100px;
}
.elfinder-cwd-icon-vnd-adobe-photoshop:before {
  content: none !important;
}
.elfinder-cwd-icon-x-shockwave-flash {
  background-position: 0 -1150px;
}
.elfinder-cwd-icon-vnd-android-package-archive {
  background-position: 0 -1200px;
}
.elfinder-cwd-icon-vnd-android-package-archive:before {
  content: none !important;
}
.elfinder-cwd-icon-x-c,
.elfinder-cwd-icon-x-csrc,
.elfinder-cwd-icon-x-chdr,
.elfinder-cwd-icon-x-c--,
.elfinder-cwd-icon-x-c--src,
.elfinder-cwd-icon-x-c--hdr {
  background-position: 0 -1250px;
}
.elfinder-cwd-icon-css {
  background-position: 0 -1300px;
}
.elfinder-cwd-icon-html {
  background-position: 0 -1350px;
}
.elfinder-cwd-icon-x-jar,
.elfinder-cwd-icon-x-java,
.elfinder-cwd-icon-x-java-source {
  background-position: 0 -1400px;
}
.elfinder-cwd-icon-x-jar:before,
.elfinder-cwd-icon-x-java:before,
.elfinder-cwd-icon-x-java-source:before {
  content: none !important;
}
.elfinder-cwd-icon-javascript,
.elfinder-cwd-icon-x-javascript {
  background-position: 0 -1450px;
}
.elfinder-cwd-icon-json {
  background-position: 0 -1500px;
}
.elfinder-cwd-icon-json:before {
  content: none !important;
}
.elfinder-cwd-icon-markdown,
.elfinder-cwd-icon-x-markdown {
  background-position: 0 -1550px;
}
.elfinder-cwd-icon-markdown:before,
.elfinder-cwd-icon-x-markdown:before {
  content: none !important;
}
.elfinder-cwd-icon-x-perl {
  background-position: 0 -1600px;
}
.elfinder-cwd-icon-x-php {
  background-position: 0 -1650px;
}
.elfinder-cwd-icon-x-python:after,
.elfinder-cwd-icon-x-python {
  background-position: 0 -1700px;
}
.elfinder-cwd-icon-x-ruby {
  background-position: 0 -1750px;
}
.elfinder-cwd-icon-x-sh,
.elfinder-cwd-icon-x-shellscript {
  background-position: 0 -1800px;
}
.elfinder-cwd-icon-sql,
.elfinder-cwd-icon-x-sql,
.elfinder-cwd-icon-x-sqlite3 {
  background-position: 0 -1850px;
}
.elfinder-cwd-icon-x-eps,
.elfinder-cwd-icon-svg,
.elfinder-cwd-icon-svg-xml {
  background-position: 0 -1900px;
}
.elfinder-cwd-icon-xml:after,
.elfinder-cwd-icon-xml {
  background-position: 0 -1950px;
}
.elfinder-cwd-icon-zip:before,
.elfinder-cwd-icon-x-zip:before {
  content: 'zip' !important;
}
.elfinder-cwd-icon-x-xz:before {
  content: 'xz' !important;
}
.elfinder-cwd-icon-x-7z-compressed:before {
  content: '7z' !important;
}
.elfinder-cwd-icon-x-gzip:before {
  content: 'gzip' !important;
}
.elfinder-cwd-icon-x-tar:before {
  content: 'tar' !important;
}
.elfinder-cwd-icon-x-bzip:before,
.elfinder-cwd-icon-x-bzip2:before {
  content: 'bzip' !important;
}
.elfinder-cwd-icon-x-rar:before,
.elfinder-cwd-icon-x-rar-compressed:before {
  content: 'rar' !important;
}
/**
 * Toolbar
 */
.elfinder-toolbar {
  background: #1E88E5;
  -webkit-border-radius: 0;
  border-radius: 0;
  border: 0;
  padding: 5px 0;
}
.elfinder-toolbar .elfinder-button-icon {
  font-size: 20px;
  color: #fff;
  margin-top: -2px;
}
.elfinder-buttonset {
  -webkit-border-radius: 0;
  border-radius: 0;
  border: 0;
  margin: 0 5px;
  height: 24px;
}
.elfinder .elfinder-button {
  background: transparent;
  -webkit-border-radius: 0;
  border-radius: 0;
  cursor: pointer;
  color: #fff;
}
.elfinder-toolbar-button-separator {
  border: 0;
}
.elfinder-button-menu {
  -webkit-border-radius: 2px;
  border-radius: 2px;
  -webkit-box-shadow: 0 1px 6px rgba(0, 0, 0, 0.3);
  box-shadow: 0 1px 6px rgba(0, 0, 0, 0.3);
  border: none;
  margin-top: 5px;
}
.elfinder-button-menu-item {
  color: #666;
  padding: 6px 19px;
}
.elfinder-button-menu-item.ui-state-hover {
  color: #141414;
  background-color: #f5f4f4;
}
.elfinder-button-menu-item-separated {
  border-top: 1px solid #e5e5e5;
}
.elfinder-button-menu-item-separated.ui-state-hover {
  border-top: 1px solid #e5e5e5;
}
.elfinder .elfinder-button-search {
  margin: 0 10px;
  min-height: inherit;
  overflow: hidden;
}
.elfinder .elfinder-button-search .ui-icon {
  color: #fff !important;
}
.elfinder .elfinder-button-search input {
  background: rgba(16, 96, 167, 0.79);
  -webkit-border-radius: 2px;
  border-radius: 2px;
  -webkit-box-sizing: content-box;
  -moz-box-sizing: content-box;
  box-sizing: content-box;
  border: 0;
  margin: 0;
  padding: 0 23px;
  height: 24px !important;
  color: #fff;
}
.elfinder .elfinder-button-search .elfinder-button-menu {
  margin-top: 4px;
  border: none;
  -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.5);
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.5);
}
.elfinder .elfinder-button-search-menu {
  -webkit-border-radius: 0;
  border-radius: 0;
  top: 30px !important;
}
.elfinder .elfinder-button-search-menu .ui-button {
  padding: 0.4em 1em !important;
}
/**
 * Navbar
 */
.elfinder .elfinder-navbar {
  background: #f3f3f3;
  -webkit-box-shadow: 0 1px 8px rgba(0, 0, 0, 0.6);
  box-shadow: 0 1px 8px rgba(0, 0, 0, 0.6);
  border: none;
}
.elfinder .elfinder-navbar .elfinder-lock,
.elfinder .elfinder-navbar .elfinder-perms,
.elfinder .elfinder-navbar .elfinder-symlink {
  color: #1d1d1d;
  opacity: 0.8;
}
.elfinder-navbar-dir {
  color: #525252;
  cursor: pointer;
  -webkit-border-radius: 2px;
  border-radius: 2px;
  padding: 5px;
  border: none;
}
.elfinder-navbar-dir .elfinder-navbar-icon {
  color: #1976D2;
}
.elfinder-navbar-dir.ui-state-hover,
.elfinder-navbar-dir.ui-state-active.ui-state-hover {
  background: #1a83df;
  color: #fff;
  border: none;
}
.elfinder-navbar-dir.ui-state-hover .elfinder-navbar-icon,
.elfinder-navbar-dir.ui-state-active.ui-state-hover .elfinder-navbar-icon {
  color: #fff;
}
.elfinder-navbar .ui-state-active,
.elfinder-disabled .elfinder-navbar .ui-state-active {
  background: #1E88E5;
  color: #fff !important;
  border: none;
}
.elfinder-navbar .ui-state-active.elfinder-navbar-dir .elfinder-navbar-icon,
.elfinder-disabled .elfinder-navbar .ui-state-active.elfinder-navbar-dir .elfinder-navbar-icon {
  color: #fff !important;
}
/**
 * Workzone
 */
.elfinder-workzone {
  background: #fff;
}
.elfinder-cwd-file {
  color: #555;
}
.elfinder-cwd-file.ui-state-hover,
.elfinder-cwd-file.ui-selected.ui-state-hover {
  background: #42A5F5;
  color: #ddd;
}
.elfinder-cwd-file.ui-selected {
  background: #339ef4;
  color: #555;
}
.elfinder-cwd-filename input,
.elfinder-cwd-filename textarea {
  padding: 2px;
  -webkit-border-radius: 2px !important;
  border-radius: 2px !important;
  background: #fff;
  color: #222;
}
.elfinder-cwd-filename input:focus,
.elfinder-cwd-filename textarea:focus {
  outline: none;
  border: 1px solid #555;
}
.elfinder-cwd-view-icons .elfinder-cwd-file .ui-state-hover,
.elfinder-cwd-view-icons .elfinder-cwd-file .elfinder-cwd-filename.ui-state-hover,
.elfinder-disabled .elfinder-cwd-view-icons .elfinder-cwd-file .elfinder-cwd-filename.ui-state-hover,
.elfinder-disabled .elfinder-cwd table td.ui-state-hover,
.elfinder-cwd-view-icons .elfinder-cwd-file .ui-state-active {
  background: transparent;
  color: #ddd;
}
.elfinder-cwd table {
  padding: 0;
}
.elfinder-cwd table thead td {
  padding: 5px 14px;
}
.elfinder-cwd table tr {
  border: 0 !important;
}
.elfinder-cwd table tr:nth-child(odd) {
  background-color: transparent;
}
.elfinder-cwd table tr:nth-child(odd).ui-state-hover {
  background-color: #42A5F5;
}
.elfinder-cwd.elfinder-table-header-sticky table {
  border: 0;
}
.elfinder-cwd .elfinder-lock,
.elfinder-cwd .elfinder-perms,
.elfinder-cwd .elfinder-symlink {
  color: #4d4d4d;
}
.elfinder-cwd-view-icons .elfinder-lock {
  top: 0;
}
.elfinder-cwd-view-list thead td .ui-resizable-handle {
  top: 3px;
}
.elfinder-cwd-view-list .elfinder-lock,
.elfinder-cwd-view-list .elfinder-perms,
.elfinder-cwd-view-list .elfinder-symlink {
  font-size: 14px;
  opacity: 0.7;
}
.elfinder-cwd-view-list .elfinder-perms {
  left: inherit;
}
#elfinder-elfinder-cwd-thead td {
  background: #1976D2;
  color: #fff;
}
#elfinder-elfinder-cwd-thead td.ui-state-hover,
#elfinder-elfinder-cwd-thead td.ui-state-active {
  background: #1669bb;
}
#elfinder-elfinder-cwd-thead td.ui-state-active.ui-state-hover {
  background: #176ec4;
}
.elfinder .ui-selectable-helper {
  border: 1px solid #2196F3;
  background-color: rgba(33, 138, 232, 0.5);
}
.elfinder-cwd-wrapper.elfinder-cwd-wrapper-trash {
  background-color: #eee;
}
.elfinder-cwd-wrapper.elfinder-cwd-wrapper-trash .elfinder-cwd-file {
  color: #333;
}
.elfinder-cwd-wrapper.elfinder-cwd-wrapper-trash .elfinder-cwd-file.ui-state-hover,
.elfinder-cwd-wrapper.elfinder-cwd-wrapper-trash .elfinder-cwd-file.ui-selected.ui-state-hover {
  background: #42A5F5;
  color: #ddd;
}
.elfinder-cwd-wrapper.elfinder-cwd-wrapper-trash .elfinder-cwd-file.ui-selected {
  background: #339ef4;
  color: #555;
}
.elfinder-info-title .elfinder-cwd-icon:before {
  top: 32px;
  display: block;
  margin: 0 auto;
}
.elfinder-info-title .elfinder-cwd-icon.elfinder-cwd-bgurl:before {
  background-color: #313131 !important;
}
.elfinder-cwd-view-icons .elfinder-cwd-icon.elfinder-cwd-bgurl:before {
  left: inherit;
  background-color: #313131;
}
.elfinder-cwd-icon:before,
.elfinder-quicklook .elfinder-cwd-icon:before,
.elfinder-cwd-size1 .elfinder-cwd-icon:before,
.elfinder-cwd-size2 .elfinder-cwd-icon:before,
.elfinder-cwd-size3 .elfinder-cwd-icon:before,
.elfinder-cwd-size1 .elfinder-cwd-icon.elfinder-cwd-bgurl:before,
.elfinder-cwd-size2 .elfinder-cwd-icon.elfinder-cwd-bgurl:before,
.elfinder-cwd-size3 .elfinder-cwd-icon.elfinder-cwd-bgurl:before {
  top: 35px;
  left: 50% !important;
  position: relative !important;
  display: block !important;
  -webkit-transform: translateX(-50%);
  -ms-transform: translateX(-50%);
  transform: translateX(-50%);
  max-width: 52px;
  color: #fff;
}
.elfinder .elfinder-cwd-view-icons .elfinder-cwd-bgurl:after,
.elfinder .elfinder-quicklook-info-wrapper .elfinder-cwd-bgurl:after {
  display: none;
}
.elfinder-cwd-size1 .elfinder-cwd-icon.elfinder-cwd-bgurl:before {
  top: 53px;
  -webkit-transform: scale(1.32) translateX(-50%);
  -ms-transform: scale(1.32) translateX(-50%);
  transform: scale(1.32) translateX(-50%);
}
.elfinder-cwd-size2 .elfinder-cwd-icon.elfinder-cwd-bgurl:before {
  top: 74px;
  -webkit-transform: scale(1.53) translateX(-50%);
  -ms-transform: scale(1.53) translateX(-50%);
  transform: scale(1.53) translateX(-50%);
}
.elfinder-cwd-size3 .elfinder-cwd-icon.elfinder-cwd-bgurl:before {
  top: 87px;
  -webkit-transform: scale(2.22) translateX(-50%);
  -ms-transform: scale(2.22) translateX(-50%);
  transform: scale(2.22) translateX(-50%);
}
/**
 * Status Bar
 */
.elfinder .elfinder-statusbar {
  background: #2196F3;
  -webkit-border-radius: 0;
  border-radius: 0;
  border: 0;
  color: #fff;
}
.elfinder-path,
.elfinder-stat-size {
  margin: 0 15px;
}
/**
 * Input & Select
 */
.elfinder input,
.elfinder select {
  padding: 4px;
  color: #666;
  background: #fff;
  -webkit-border-radius: 3px;
  border-radius: 3px;
  font-weight: normal;
  border-color: #888;
  -webkit-box-shadow: none !important;
  box-shadow: none !important;
}
.elfinder input.ui-state-hover,
.elfinder select.ui-state-hover {
  background: #fff !important;
  color: #666 !important;
}
.elfinder input[type="checkbox"] {
  position: relative;
  height: initial;
}
.elfinder input[type="checkbox"]:after,
.elfinder input[type="checkbox"]:focus:after {
  content: "";
  display: block;
  width: 12px;
  height: 12px;
  border: 1px solid #707070;
  background-color: #fff;
  -webkit-border-radius: 2px;
  border-radius: 2px;
}
.elfinder input[type="checkbox"]:checked:before {
  content: "";
  position: absolute;
  top: -3px;
  left: 6px;
  display: table;
  width: 4px;
  height: 12px;
  border: 2px solid #707070;
  border-top-width: 0;
  border-left-width: 0;
  -webkit-transform: rotate(45deg);
  -ms-transform: rotate(45deg);
  transform: rotate(45deg);
}
/**
 * Buttons
 */
.elfinder .ui-button,
.elfinder .ui-button:active,
.elfinder .ui-button.ui-state-default {
  display: inline-block;
  font-weight: normal;
  text-align: center;
  vertical-align: middle;
  cursor: pointer;
  white-space: nowrap;
  -webkit-border-radius: 3px;
  border-radius: 3px;
  text-transform: uppercase;
  -webkit-box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.4) !important;
  box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.4) !important;
  -webkit-transition: all 0.4s;
  -o-transition: all 0.4s;
  transition: all 0.4s;
  background: #fff;
  color: #222;
  border: none;
  padding: 7px 6px;
}
.elfinder .ui-button .ui-icon,
.elfinder .ui-button:active .ui-icon,
.elfinder .ui-button.ui-state-default .ui-icon {
  color: #222;
}
.elfinder .ui-button:hover,
.elfinder a.ui-button:active,
.elfinder .ui-button:active,
.elfinder .ui-button:focus,
.elfinder .ui-button.ui-state-hover,
.elfinder .ui-button.ui-state-active {
  background: #3498db !important;
  color: #fff !important;
  border: none;
}
.elfinder .ui-button:hover .ui-icon,
.elfinder a.ui-button:active .ui-icon,
.elfinder .ui-button:active .ui-icon,
.elfinder .ui-button:focus .ui-icon,
.elfinder .ui-button.ui-state-hover .ui-icon,
.elfinder .ui-button.ui-state-active .ui-icon {
  color: #fff;
}
.elfinder .ui-button.ui-state-active:hover {
  background: #217dbb;
  color: #fff;
  border: none;
}
.elfinder .ui-button:focus {
  outline: none !important;
}
.elfinder .ui-controlgroup-horizontal .ui-button {
  -webkit-border-radius: 0;
  border-radius: 0;
  border: 0;
}
.elfinder input:not([type="checkbox"]),
.elfinder .elfinder-resize-preset-container .ui-button {
  height: 21px;
}
/**
 * Context Menu
 */
.elfinder .elfinder-contextmenu,
.elfinder .elfinder-contextmenu-sub {
  -webkit-border-radius: 2px;
  border-radius: 2px;
  -webkit-box-shadow: 0 1px 6px rgba(0, 0, 0, 0.3);
  box-shadow: 0 1px 6px rgba(0, 0, 0, 0.3);
  border: none;
}
.elfinder .elfinder-contextmenu-separator,
.elfinder .elfinder-contextmenu-sub-separator {
  border-top: 1px solid #e5e5e5;
}
.elfinder .elfinder-contextmenu-item {
  color: #666;
  padding: 5px 30px;
}
.elfinder .elfinder-contextmenu-item.ui-state-hover {
  background-color: #f5f4f4;
  color: #141414;
}
.elfinder .elfinder-contextmenu-item.ui-state-active {
  background-color: #2196f3;
  color: #fff;
}
/**
 * Dialogs
 */
.elfinder .elfinder-dialog {
  -webkit-border-radius: 0;
  border-radius: 0;
  border: 0;
  -webkit-box-shadow: 0 1px 30px rgba(0, 0, 0, 0.6);
  box-shadow: 0 1px 30px rgba(0, 0, 0, 0.6);
}
.elfinder .elfinder-dialog .ui-dialog-content[id*="edit-elfinder-elfinder-"] {
  padding: 0;
}
.elfinder .elfinder-dialog .ui-tabs {
  -webkit-border-radius: 0;
  border-radius: 0;
  border: 0;
  padding: 0;
}
.elfinder .elfinder-dialog .ui-tabs-nav {
  -webkit-border-radius: 0;
  border-radius: 0;
  border: 0;
  background: transparent;
  border-bottom: 1px solid #ddd;
}
.elfinder .elfinder-dialog .ui-tabs-nav li {
  border: 0;
  font-weight: normal;
  background: transparent;
  margin: 0;
  padding: 0;
}
.elfinder .elfinder-dialog .ui-tabs-nav li a {
  padding: 7px 9px;
}
.elfinder .elfinder-dialog .ui-tabs-nav .ui-tabs-selected a,
.elfinder .elfinder-dialog .ui-tabs-nav .ui-state-active a,
.elfinder .elfinder-dialog .ui-tabs-nav li:hover a {
  -webkit-box-shadow: inset 0 -2px 0 #3498db;
  box-shadow: inset 0 -2px 0 #3498db;
  color: #3498db;
}
.elfinder .elfinder-dialog .ui-tabs .elfinder-tabstop.ui-state-hover {
  background: transparent;
  -webkit-box-shadow: inset 0 -2px 0 #3498db;
  box-shadow: inset 0 -2px 0 #3498db;
  color: #3498db;
}
.elfinder .elfinder-dialog label.ui-state-hover {
  background: transparent;
}
.elfinder .elfinder-dialog .ui-resizable-se {
  display: none;
}
.std42-dialog .ui-dialog-titlebar {
  background: #1565C0;
  -webkit-border-radius: 0;
  border-radius: 0;
  border: 0;
}
.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-button .ui-icon {
  border-color: inherit;
  -webkit-transition: 0.2s ease-out;
  -o-transition: 0.2s ease-out;
  transition: 0.2s ease-out;
  opacity: 0.8;
  color: #fff;
  width: auto;
  height: auto;
  font-size: 12px;
  padding: 3px;
}
.std42-dialog,
.std42-dialog .ui-dialog-content,
.std42-dialog.elfinder-bg-translucent,
.std42-dialog.elfinder-bg-translucent .ui-widget-content {
  background-color: #fff;
}
.std42-dialog .ui-dialog-buttonpane button {
  margin: -1px 2px 2px;
  padding: 7px 6px;
}
.std42-dialog .ui-dialog-buttonpane button span.ui-icon {
  padding: 0;
}
.std42-dialog .ui-dialog-buttonpane .ui-dialog-buttonset.elfinder-edit-extras select {
  margin-top: 0;
}
.std42-dialog,
.std42-dialog .ui-widget-content {
  background-color: #fff;
}
.elfinder-mobile .std42-dialog .ui-dialog-titlebar .ui-dialog-titlebar-close .ui-icon,
.std42-dialog .ui-dialog-titlebar .ui-dialog-titlebar-close:hover .ui-icon {
  background-color: #f44336;
}
.elfinder-mobile .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-full .ui-icon,
.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-full:hover .ui-icon {
  background-color: #4caf50;
}
.elfinder-mobile .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-minimize .ui-icon,
.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-minimize:hover .ui-icon {
  background-color: #ff9800;
}
.elfinder-dialog-title {
  color: #f1f1f1;
}
.elfinder .ui-widget-content {
  font-family: "Noto Sans", sans-serif;
  color: #546e7a;
}
.elfinder-upload-dialog-wrapper .elfinder-upload-dirselect {
  width: inherit;
  height: inherit;
  padding: 7px;
  margin-left: 5px;
  color: #222;
  -webkit-box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.4);
  box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.4);
  background: #fff;
  bottom: 4px;
  -webkit-border-radius: 2px;
  border-radius: 2px;
}
.elfinder-upload-dialog-wrapper .elfinder-upload-dirselect.ui-state-hover {
  background: #3498db !important;
  color: #fff !important;
  outline: none;
}
.elfinder-upload-dialog-wrapper .ui-button {
  padding: 0.4em 3px;
  margin: 0 -15px 0 19px;
}
.elfinder-upload-dropbox {
  border: 2px dashed #bbb;
}
.elfinder-upload-dropbox:focus {
  outline: none;
}
.elfinder-upload-dropbox.ui-state-hover {
  background: #f1f1f1;
  border: 2px dashed #bbb;
}
.elfinder-dialog-resize .elfinder-resize-control-panel {
  margin-left: -5px;
}
.elfinder-dialog-resize .elfinder-resize-control-panel .ui-button {
  height: inherit;
  margin-bottom: 5px;
}
.elfinder-help * {
  color: #546e7a;
}
.elfinder-help a {
  color: #3498db;
}
.elfinder-help a:hover {
  color: #217dbb;
}
.elfinder .ui-slider.ui-slider-horizontal {
  height: 2px;
  border: 0;
  background-color: #bababa !important;
}
.elfinder .ui-slider .ui-slider-handle {
  background-image: none;
  background-color: #5d5858;
  -webkit-border-radius: 50%;
  border-radius: 50%;
  border: 0;
  margin-top: -3px;
}
.elfinder .ui-slider .ui-slider-handle.ui-state-hover {
  background: #5d5858 !important;
  -webkit-box-shadow: none !important;
  box-shadow: none !important;
  -webkit-border-radius: 50%;
  border-radius: 50%;
  cursor: pointer;
}
/**
 * Quick Look
 */
.elfinder-quicklook {
  background: #232323;
  -webkit-border-radius: 2px;
  border-radius: 2px;
}
.elfinder-quicklook-titlebar {
  background: inherit;
}
.elfinder-quicklook-titlebar-icon .ui-icon {
  background: transparent;
  color: #fff;
}
.elfinder-quicklook-fullscreen .elfinder-quicklook-navbar {
  border: inherit;
  opacity: inherit;
  -webkit-border-radius: 4px;
  border-radius: 4px;
  background: rgba(66, 66, 66, 0.73);
}
.elfinder .elfinder-navdock {
  border: 0;
}
.std42-dialog .ui-dialog-titlebar .ui-dialog-titlebar-close:hover .ui-icon,
.elfinder-mobile .std42-dialog .ui-dialog-titlebar .ui-dialog-titlebar-close .ui-icon,
.elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-close:hover,
.elfinder-mobile .elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-close,
.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-minimize:hover .ui-icon,
.elfinder-mobile .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-minimize .ui-icon,
.elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-minimize:hover,
.elfinder-mobile .elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-minimize,
.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-full:hover .ui-icon,
.elfinder-mobile .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-full .ui-icon,
.elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-full:hover,
.elfinder-mobile .elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-full {
  background-image: none;
}
/*!
 * elFinder-Material-Theme (Light) v2.1.9 (https://github.com/RobiNN1/elFinder-Material-Theme)
 * Copyright 2016-2019 Róbert Kelčák {RobiNN}
 * Licensed under MIT (https://github.com/RobiNN1/elFinder-Material-Theme/blob/master/LICENSE)
 */@import url("https://fonts.googleapis.com/css?family=Noto+Sans:400,400i,700,700i&subset=cyrillic,cyrillic-ext,devanagari,greek,greek-ext,latin-ext,vietnamese");.elfinder{color:#546e7a;font-family:"Noto Sans", sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.elfinder.ui-widget.ui-widget-content{font-family:"Noto Sans", sans-serif;-webkit-box-shadow:0 1px 8px rgba(0, 0, 0, 0.6);box-shadow:0 1px 8px rgba(0, 0, 0, 0.6);-webkit-border-radius:0;border-radius:0;border:0}.elfinder *{outline:0!important}.elfinder-button-icon-spinner,.elfinder-info-spinner,.elfinder-navbar-spinner{background:url("../images/loading.svg") center center no-repeat!important;width:16px;height:16px}@-webkit-keyframes progress-animation{0%{background-position:1rem 0}to{background-position:0 0}}@keyframes progress-animation{0%{background-position:1rem 0}to{background-position:0 0}}.elfinder-notify-progressbar{border:0}.elfinder-notify-progress,.elfinder-notify-progressbar{-webkit-border-radius:0;border-radius:0}.elfinder-notify-progress,.elfinder-resize-spinner{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:1rem 1rem;background-size:1rem 1rem;-webkit-animation:progress-animation 1s linear infinite;animation:progress-animation 1s linear infinite;background-color:#0275d8;height:1rem}.elfinder .elfinder-toast>div{background-color:#323232!important;color:#d6d6d6;-webkit-box-shadow:none;box-shadow:none;opacity:inherit;padding:10px 60px}.elfinder .elfinder-toast>div button.ui-button{color:#fff}.elfinder .elfinder-toast>.toast-info button.ui-button{background-color:#3498db}.elfinder .elfinder-toast>.toast-error button.ui-button{background-color:#f44336}.elfinder .elfinder-toast>.toast-success button.ui-button{background-color:#4caf50}.elfinder .elfinder-toast>.toast-warning button.ui-button{background-color:#ff9800}.elfinder-toast-msg{font-family:"Noto Sans", sans-serif;font-size:17px}#ace_settingsmenu{font-family:"Noto Sans", sans-serif;-webkit-box-shadow:0 1px 30px rgba(0, 0, 0, 0.6)!important;box-shadow:0 1px 30px rgba(0, 0, 0, 0.6)!important;background-color:#1d2736!important;color:#e6e6e6!important}#ace_settingsmenu,#kbshortcutmenu{padding:0}.ace_optionsMenuEntry{padding:5px 10px}.ace_optionsMenuEntry:hover{background-color:#111721}.ace_optionsMenuEntry label{font-size:13px}#ace_settingsmenu input[type=text],#ace_settingsmenu select{margin:1px 2px 2px;padding:2px 5px;-webkit-border-radius:3px;border-radius:3px;border:0;background:rgba(9, 53, 121, 0.75);color:white!important}@font-face{font-family:material;src:url("../icons/material.eot?91804974");src:url("../icons/material.eot?91804974#iefix") format("embedded-opentype"), url("../icons/material.woff2?91804974") format("woff2"), url("../icons/material.woff?91804974") format("woff"), url("../icons/material.ttf?91804974") format("truetype"), url("../icons/material.svg?91804974#material") format("svg");font-weight:normal;font-style:normal}@media screen and (-webkit-min-device-pixel-ratio:0){@font-face{font-family:material;src:url("../icons/material.svg?91804974#material") format("svg")}}.elfinder-button-icon,.elfinder .ui-icon,.ui-widget-content .ui-icon,.ui-widget-header .ui-icon{font:normal normal normal 14px/1 material;background-image:inherit;text-indent:inherit}.elfinder .ui-button-icon-only .ui-icon{font:normal normal normal 14px/1 material;background-image:inherit!important;text-indent:0;font-size:16px}.elfinder-button-icon{background:inherit}.elfinder-button-icon-home:before{content:'\e800'}.elfinder-button-icon-back:before{content:'\e801'}.elfinder-button-icon-forward:before{content:'\e802'}.elfinder-button-icon-up:before{content:'\e803'}.elfinder-button-icon-dir:before{content:'\e804'}.elfinder-button-icon-opendir:before{content:'\e805'}.elfinder-button-icon-reload:before{content:'\e806'}.elfinder-button-icon-open:before{content:'\e807'}.elfinder-button-icon-mkdir:before{content:'\e808'}.elfinder-button-icon-mkfile:before{content:'\e809'}.elfinder-button-icon-rm:before{content:'\e80a'}.elfinder-button-icon-trash:before{content:'\e80b'}.elfinder-button-icon-restore:before{content:'\e80c'}.elfinder-button-icon-copy:before{content:'\e80d'}.elfinder-button-icon-cut:before{content:'\e80e'}.elfinder-button-icon-paste:before{content:'\e80f'}.elfinder-button-icon-getfile:before{content:'\e810'}.elfinder-button-icon-duplicate:before{content:'\e811'}.elfinder-button-icon-rename:before{content:'\e812'}.elfinder-button-icon-edit:before{content:'\e813'}.elfinder-button-icon-quicklook:before{content:'\e814'}.elfinder-button-icon-upload:before{content:'\e815'}.elfinder-button-icon-download:before{content:'\e816'}.elfinder-button-icon-info:before{content:'\e817'}.elfinder-button-icon-extract:before{content:'\e818'}.elfinder-button-icon-archive:before{content:'\e819'}.elfinder-button-icon-view:before{content:'\e81a'}.elfinder-button-icon-view-list:before{content:'\e81b'}.elfinder-button-icon-help:before{content:'\e81c'}.elfinder-button-icon-resize:before{content:'\e81d'}.elfinder-button-icon-link:before{content:'\e81e'}.elfinder-button-icon-search:before{content:'\e81f'}.elfinder-button-icon-sort:before{content:'\e820'}.elfinder-button-icon-rotate-r:before{content:'\e821'}.elfinder-button-icon-rotate-l:before{content:'\e822'}.elfinder-button-icon-netmount:before{content:'\e823'}.elfinder-button-icon-netunmount:before{content:'\e824'}.elfinder-button-icon-places:before{content:'\e825'}.elfinder-button-icon-chmod:before{content:'\e826'}.elfinder-button-icon-accept:before{content:'\e827'}.elfinder-button-icon-menu:before{content:'\e828'}.elfinder-button-icon-colwidth:before{content:'\e829'}.elfinder-button-icon-fullscreen:before{content:'\e82a'}.elfinder-button-icon-unfullscreen:before{content:'\e82b'}.elfinder-button-icon-empty:before{content:'\e82c'}.elfinder-button-icon-undo:before{content:'\e82d'}.elfinder-button-icon-redo:before{content:'\e82e'}.elfinder-button-icon-preference:before{content:'\e82f'}.elfinder-button-icon-mkdirin:before{content:'\e830'}.elfinder-button-icon-selectall:before{content:'\e831'}.elfinder-button-icon-selectnone:before{content:'\e832'}.elfinder-button-icon-selectinvert:before{content:'\e833'}.elfinder-button-icon-logout:before{content:'\e85a'}.elfinder-button-icon-opennew:before{content:'\e85b'}.elfinder-button-icon-hide:before{content:'\e85d'}.elfinder-button-search .ui-icon.ui-icon-search{font-size:17px}.elfinder-button-search .ui-icon:hover{opacity:1}.elfinder-navbar-icon{font:normal normal normal 16px/1 material;background-image:inherit!important}.elfinder-navbar-icon:before{content:'\e804'}.elfinder-droppable-active .elfinder-navbar-icon:before,.elfinder .ui-state-active .elfinder-navbar-icon:before,.elfinder .ui-state-hover .elfinder-navbar-icon:before{content:'\e805'}.elfinder-navbar-root-local .elfinder-navbar-icon:before{content:'\e83d'!important}.elfinder-navbar-root-ftp .elfinder-navbar-icon:before{content:'\e823'!important}.elfinder-navbar-root-sql .elfinder-navbar-icon:before{content:'\e83e'!important}.elfinder-navbar-root-dropbox .elfinder-navbar-icon:before{content:'\e83f'!important}.elfinder-navbar-root-googledrive .elfinder-navbar-icon:before{content:'\e840'!important}.elfinder-navbar-root-onedrive .elfinder-navbar-icon:before{content:'\e841'!important}.elfinder-navbar-root-box .elfinder-navbar-icon:before{content:'\e842'!important}.elfinder-navbar-root-trash .elfinder-navbar-icon:before{content:'\e80b'!important}.elfinder-navbar-root-zip .elfinder-navbar-icon:before{content:'\e85c'!important}.elfinder-navbar-root-network .elfinder-navbar-icon:before{content:'\e823'!important}.elfinder-places .elfinder-navbar-root .elfinder-navbar-icon:before{content:'\e825'!important}.elfinder-navbar-arrow{background-image:inherit!important;font:normal normal normal 14px/1 material;font-size:10px;padding-top:3px;padding-left:2px;color:#a9a9a9}.elfinder .ui-state-active .elfinder-navbar-arrow{color:#fff}.elfinder-ltr .elfinder-navbar-collapsed .elfinder-navbar-arrow:before{content:'\e857'}.elfinder-rtl .elfinder-navbar-collapsed .elfinder-navbar-arrow:before{content:'\e858'}.elfinder-ltr .elfinder-navbar-expanded .elfinder-navbar-arrow:before,.elfinder-rtl .elfinder-navbar-expanded .elfinder-navbar-arrow:before{content:'\e851'}div.elfinder-cwd-wrapper-list tr.ui-state-default td span.ui-icon{font-size:8px;margin-top:5px;margin-right:5px}div.elfinder-cwd-wrapper-list .ui-icon-grip-dotted-vertical{margin:2px}.elfinder-cwd-view-list .elfinder-navbar-root-box td .elfinder-cwd-icon,.elfinder-cwd-view-list .elfinder-navbar-root-dropbox td .elfinder-cwd-icon,.elfinder-cwd-view-list .elfinder-navbar-root-ftp td .elfinder-cwd-icon,.elfinder-cwd-view-list .elfinder-navbar-root-googledrive td .elfinder-cwd-icon,.elfinder-cwd-view-list .elfinder-navbar-root-local td .elfinder-cwd-icon,.elfinder-cwd-view-list .elfinder-navbar-root-network td .elfinder-cwd-icon,.elfinder-cwd-view-list .elfinder-navbar-root-onedrive td .elfinder-cwd-icon,.elfinder-cwd-view-list .elfinder-navbar-root-sql td .elfinder-cwd-icon,.elfinder-cwd-view-list .elfinder-navbar-root-trash td .elfinder-cwd-icon,.elfinder-cwd-view-list .elfinder-navbar-root-zip td .elfinder-cwd-icon,.elfinder-navbar-root-box .elfinder-cwd-icon,.elfinder-navbar-root-dropbox .elfinder-cwd-icon,.elfinder-navbar-root-ftp .elfinder-cwd-icon,.elfinder-navbar-root-googledrive .elfinder-cwd-icon,.elfinder-navbar-root-local .elfinder-cwd-icon,.elfinder-navbar-root-network .elfinder-cwd-icon,.elfinder-navbar-root-onedrive .elfinder-cwd-icon,.elfinder-navbar-root-sql .elfinder-cwd-icon,.elfinder-navbar-root-trash .elfinder-cwd-icon,.elfinder-navbar-root-zip .elfinder-cwd-icon{background-image:inherit}.elfinder-cwd-view-list .elfinder-navbar-root-box td .elfinder-cwd-icon:before,.elfinder-cwd-view-list .elfinder-navbar-root-dropbox td .elfinder-cwd-icon:before,.elfinder-cwd-view-list .elfinder-navbar-root-ftp td .elfinder-cwd-icon:before,.elfinder-cwd-view-list .elfinder-navbar-root-googledrive td .elfinder-cwd-icon:before,.elfinder-cwd-view-list .elfinder-navbar-root-local td .elfinder-cwd-icon:before,.elfinder-cwd-view-list .elfinder-navbar-root-network td .elfinder-cwd-icon:before,.elfinder-cwd-view-list .elfinder-navbar-root-onedrive td .elfinder-cwd-icon:before,.elfinder-cwd-view-list .elfinder-navbar-root-sql td .elfinder-cwd-icon:before,.elfinder-cwd-view-list .elfinder-navbar-root-trash td .elfinder-cwd-icon:before,.elfinder-cwd-view-list .elfinder-navbar-root-zip td .elfinder-cwd-icon:before,.elfinder-navbar-root-box .elfinder-cwd-icon:before,.elfinder-navbar-root-dropbox .elfinder-cwd-icon:before,.elfinder-navbar-root-ftp .elfinder-cwd-icon:before,.elfinder-navbar-root-googledrive .elfinder-cwd-icon:before,.elfinder-navbar-root-local .elfinder-cwd-icon:before,.elfinder-navbar-root-network .elfinder-cwd-icon:before,.elfinder-navbar-root-onedrive .elfinder-cwd-icon:before,.elfinder-navbar-root-sql .elfinder-cwd-icon:before,.elfinder-navbar-root-trash .elfinder-cwd-icon:before,.elfinder-navbar-root-zip .elfinder-cwd-icon:before{font-family:material;background-color:transparent;color:#525252;font-size:55px;position:relative;top:-10px!important;padding:0;display:contents!important}.elfinder-cwd-view-list .elfinder-navbar-root-local td .elfinder-cwd-icon:before,.elfinder-navbar-root-local .elfinder-cwd-icon:before{content:'\e83d'}.elfinder-cwd-view-list .elfinder-navbar-root-ftp td .elfinder-cwd-icon:before,.elfinder-navbar-root-ftp .elfinder-cwd-icon:before{content:'\e823'}.elfinder-cwd-view-list .elfinder-navbar-root-sql td .elfinder-cwd-icon:before,.elfinder-navbar-root-sql .elfinder-cwd-icon:before{content:'\e83e'}.elfinder-cwd-view-list .elfinder-navbar-roor-dropbox td .elfinder-cwd-icon:before,.elfinder-navbar-roor-dropbox .elfinder-cwd-icon:before{content:'\e83f'}.elfinder-cwd-view-list .elfinder-navbar-roor-googledrive td .elfinder-cwd-icon:before,.elfinder-navbar-roor-googledrive .elfinder-cwd-icon:before{content:'\e840'}.elfinder-cwd-view-list .elfinder-navbar-roor-onedrive td .elfinder-cwd-icon:before,.elfinder-navbar-roor-onedrive .elfinder-cwd-icon:before{content:'\e841'}.elfinder-cwd-view-list .elfinder-navbar-roor-box td .elfinder-cwd-icon:before,.elfinder-navbar-roor-box .elfinder-cwd-icon:before{content:'\e842'}.elfinder-cwd-view-list .elfinder-navbar-root-trash td .elfinder-cwd-icon:before,.elfinder-navbar-root-trash .elfinder-cwd-icon:before{content:'\e80b'}.elfinder-cwd-view-list .elfinder-navbar-root-zip td .elfinder-cwd-icon:before,.elfinder-navbar-root-zip .elfinder-cwd-icon:before{content:'\e85c'}.elfinder-cwd-view-list .elfinder-navbar-root-network td .elfinder-cwd-icon:before,.elfinder-navbar-root-network .elfinder-cwd-icon:before{content:'\e823'}.elfinder-dialog-icon{font:normal normal normal 14px/1 material;background:inherit;color:#524949;font-size:37px}.elfinder-dialog-icon:before{content:'\e843'}.elfinder-dialog-icon-mkdir:before{content:'\e808'}.elfinder-dialog-icon-mkfile:before{content:'\e809'}.elfinder-dialog-icon-copy:before{content:'\e80d'}.elfinder-dialog-icon-move:before,.elfinder-dialog-icon-prepare:before{content:'\e844'}.elfinder-dialog-icon-chunkmerge:before,.elfinder-dialog-icon-upload:before{content:'\e815'}.elfinder-dialog-icon-rm:before{content:'\e80a'}.elfinder-dialog-icon-file:before,.elfinder-dialog-icon-open:before,.elfinder-dialog-icon-readdir:before{content:'\e807'}.elfinder-dialog-icon-reload:before{content:'\e806'}.elfinder-dialog-icon-download:before{content:'\e816'}.elfinder-dialog-icon-save:before{content:'\e845'}.elfinder-dialog-icon-rename:before{content:'\e812'}.elfinder-dialog-icon-archive:before,.elfinder-dialog-icon-zipdl:before{content:'\e819'}.elfinder-dialog-icon-extract:before{content:'\e818'}.elfinder-dialog-icon-search:before{content:'\e81f'}.elfinder-dialog-icon-loadimg:before{content:'\e846'}.elfinder-dialog-icon-url:before{content:'\e81e'}.elfinder-dialog-icon-resize:before{content:'\e81d'}.elfinder-dialog-icon-netmount:before{content:'\e823'}.elfinder-dialog-icon-netunmount:before{content:'\e824'}.elfinder-dialog-icon-chmod:before{content:'\e826'}.elfinder-dialog-icon-dim:before,.elfinder-dialog-icon-preupload:before{content:'\e847'}.elfinder-contextmenu .elfinder-contextmenu-item span.elfinder-contextmenu-icon{font-size:16px}.elfinder-contextmenu .elfinder-contextmenu-item .elfinder-contextsubmenu-item .ui-icon{font-size:15px}.elfinder-contextmenu .elfinder-contextmenu-item .elfinder-button-icon-link:before{content:'\e837'}.elfinder .elfinder-contextmenu-extra-icon{margin-top:-6px}.elfinder .elfinder-contextmenu-extra-icon a{padding:5px;margin:-16px}.elfinder-button-icon-link:before{content:'\e81e'!important}.elfinder .elfinder-contextmenu-arrow{font:normal normal normal 14px/1 material;background-image:inherit;font-size:10px!important;padding-top:3px}.elfinder .elfinder-contextmenu-arrow:before{content:'\e857'}.elfinder-contextmenu .ui-state-hover .elfinder-contextmenu-arrow{background-image:inherit}.elfinder-quicklook .ui-resizable-se{background:inherit}.elfinder-quicklook-navbar-icon{background:transparent;font:normal normal normal 14px/1 material;font-size:32px;color:#fff}.elfinder-quicklook-titlebar-icon{margin-top:-8px}.elfinder-quicklook-titlebar-icon .ui-icon{border:0;opacity:0.8;font-size:15px;padding:1px}.elfinder-quicklook-titlebar .ui-icon-circle-close,.elfinder-quicklook .ui-icon-gripsmall-diagonal-se{color:#f1f1f1}.elfinder-quicklook-navbar-icon-prev:before{content:'\e848'}.elfinder-quicklook-navbar-icon-next:before{content:'\e849'}.elfinder-quicklook-navbar-icon-fullscreen:before{content:'\e84a'}.elfinder-quicklook-navbar-icon-fullscreen-off:before{content:'\e84b'}.elfinder-quicklook-navbar-icon-close:before{content:'\e84c'}.elfinder .ui-button-icon{background-image:inherit}.elfinder .ui-icon-search:before{content:'\e81f'}.elfinder .ui-icon-close:before,.elfinder .ui-icon-closethick:before{content:'\e839'}.elfinder .ui-icon-circle-close:before{content:'\e84c'}.elfinder .ui-icon-gear:before{content:'\e82f'}.elfinder .ui-icon-gripsmall-diagonal-se:before{content:'\e838'}.elfinder .ui-icon-locked:before{content:'\e834'}.elfinder .ui-icon-unlocked:before{content:'\e836'}.elfinder .ui-icon-arrowrefresh-1-n:before{content:'\e821'}.elfinder .ui-icon-plusthick:before{content:'\e83a'}.elfinder .ui-icon-arrowreturnthick-1-s:before{content:'\e83b'}.elfinder .ui-icon-minusthick:before{content:'\e83c'}.elfinder .ui-icon-pin-s:before{content:'\e84d'}.elfinder .ui-icon-check:before{content:'\e84e'}.elfinder .ui-icon-arrowthick-1-s:before{content:'\e84f'}.elfinder .ui-icon-arrowthick-1-n:before{content:'\e850'}.elfinder .ui-icon-triangle-1-s:before{content:'\e851'}.elfinder .ui-icon-triangle-1-n:before{content:'\e852'}.elfinder .ui-icon-grip-dotted-vertical:before{content:'\e853'}.elfinder-lock,.elfinder-perms,.elfinder-symlink{background-image:inherit;font:normal normal normal 18px/1 material;color:#4d4d4d}.elfinder-na .elfinder-perms:before{content:'\e824'}.elfinder-ro .elfinder-perms:before{content:'\e835'}.elfinder-wo .elfinder-perms:before{content:'\e854'}.elfinder-group .elfinder-perms:before{content:'\e800'}.elfinder-lock:before{content:'\e84d'}.elfinder-symlink:before{content:'\e837'}.elfinder .elfinder-toast>div{font:normal normal normal 14px/1 material}.elfinder .elfinder-toast>div:before{font-size:45px;position:absolute;left:5px;top:15px}.elfinder .elfinder-toast>.toast-error,.elfinder .elfinder-toast>.toast-info,.elfinder .elfinder-toast>.toast-success,.elfinder .elfinder-toast>.toast-warning{background-image:inherit!important}.elfinder .elfinder-toast>.toast-info:before{content:'\e817';color:#3498db}.elfinder .elfinder-toast>.toast-error:before{content:'\e855';color:#f44336}.elfinder .elfinder-toast>.toast-success:before{content:'\e84e';color:#4caf50}.elfinder .elfinder-toast>.toast-warning:before{content:'\e856';color:#ff9800}.elfinder-drag-helper-icon-status{font:normal normal normal 14px/1 material;background:inherit}.elfinder-drag-helper-icon-status:before{content:'\e824'}.elfinder-drag-helper-move .elfinder-drag-helper-icon-status{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.elfinder-drag-helper-move .elfinder-drag-helper-icon-status:before{content:'\e854'}.elfinder-drag-helper-plus .elfinder-drag-helper-icon-status{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.elfinder-drag-helper-plus .elfinder-drag-helper-icon-status:before{content:'\e84c'}.elfinder-cwd-view-list td .elfinder-cwd-icon{background-image:url("../images/icons-small.svg")}.elfinder-cwd-icon{background:url("../images/icons-big.svg") 0 0 no-repeat;-webkit-border-radius:0;border-radius:0}.elfinder-cwd-icon:before{font-size:10px;position:relative;top:27px;left:inherit;padding:1px;background-color:transparent}.elfinder-cwd-icon-directory{background-position:0 -50px}.elfinder-cwd .elfinder-droppable-active .elfinder-cwd-icon{background-position:0 -100px}.elfinder-cwd-icon-group{background-position:0 -150px}.elfinder-cwd-icon-application{background-position:0 -200px}.elfinder-cwd-icon-rtf,.elfinder-cwd-icon-rtfd,.elfinder-cwd-icon-text{background-position:0 -250px}.elfinder-cwd-icon-image{background-position:0 -300px}.elfinder-cwd-icon-audio{background-position:0 -350px}.elfinder-cwd-icon-dash-xml,.elfinder-cwd-icon-flash-video,.elfinder-cwd-icon-video,.elfinder-cwd-icon-vnd-apple-mpegurl,.elfinder-cwd-icon-x-mpegurl{background-position:0 -400px}.elfinder-cwd-icon-plain,.elfinder-cwd-icon-x-empty{background-position:0 -450px}.elfinder-cwd-icon-pdf{background-position:0 -500px}.elfinder-cwd-icon-vnd-ms-office{background-position:0 -550px}.elfinder-cwd-icon-x-msaccess{background-position:0 -600px}.elfinder-cwd-icon-x-msaccess:before{content:none!important}.elfinder-cwd-icon-ms-excel,.elfinder-cwd-icon-vnd-ms-excel,.elfinder-cwd-icon-vnd-ms-excel-addin-macroEnabled-12,.elfinder-cwd-icon-vnd-ms-excel-sheet-binary-macroEnabled-12,.elfinder-cwd-icon-vnd-ms-excel-sheet-macroEnabled-12,.elfinder-cwd-icon-vnd-ms-excel-template-macroEnabled-12{background-position:0 -650px}.elfinder-cwd-icon-ms-excel:before,.elfinder-cwd-icon-vnd-ms-excel-addin-macroEnabled-12:before,.elfinder-cwd-icon-vnd-ms-excel-sheet-binary-macroEnabled-12:before,.elfinder-cwd-icon-vnd-ms-excel-sheet-macroEnabled-12:before,.elfinder-cwd-icon-vnd-ms-excel-template-macroEnabled-12:before,.elfinder-cwd-icon-vnd-ms-excel:before{content:none!important}.elfinder-cwd-icon-vnd-ms-powerpoint,.elfinder-cwd-icon-vnd-ms-powerpoint-addin-macroEnabled-12,.elfinder-cwd-icon-vnd-ms-powerpoint-presentation-macroEnabled-12,.elfinder-cwd-icon-vnd-ms-powerpoint-slide-macroEnabled-12,.elfinder-cwd-icon-vnd-ms-powerpoint-slideshow-macroEnabled-12,.elfinder-cwd-icon-vnd-ms-powerpoint-template-macroEnabled-12{background-position:0 -700px}.elfinder-cwd-icon-vnd-ms-powerpoint-addin-macroEnabled-12:before,.elfinder-cwd-icon-vnd-ms-powerpoint-presentation-macroEnabled-12:before,.elfinder-cwd-icon-vnd-ms-powerpoint-slide-macroEnabled-12:before,.elfinder-cwd-icon-vnd-ms-powerpoint-slideshow-macroEnabled-12:before,.elfinder-cwd-icon-vnd-ms-powerpoint-template-macroEnabled-12:before,.elfinder-cwd-icon-vnd-ms-powerpoint:before{content:none!important}.elfinder-cwd-icon-msword,.elfinder-cwd-icon-vnd-ms-word,.elfinder-cwd-icon-vnd-ms-word-document-macroEnabled-12,.elfinder-cwd-icon-vnd-ms-word-template-macroEnabled-12{background-position:0 -750px}.elfinder-cwd-icon-msword:before,.elfinder-cwd-icon-vnd-ms-word-document-macroEnabled-12:before,.elfinder-cwd-icon-vnd-ms-word-template-macroEnabled-12:before,.elfinder-cwd-icon-vnd-ms-word:before{content:none!important}.elfinder-cwd-icon-vnd-oasis-opendocument-base,.elfinder-cwd-icon-vnd-oasis-opendocument-chart,.elfinder-cwd-icon-vnd-oasis-opendocument-database,.elfinder-cwd-icon-vnd-oasis-opendocument-formula,.elfinder-cwd-icon-vnd-oasis-opendocument-graphics,.elfinder-cwd-icon-vnd-oasis-opendocument-graphics-template,.elfinder-cwd-icon-vnd-oasis-opendocument-image,.elfinder-cwd-icon-vnd-openofficeorg-extension{background-position:0 -800px}.elfinder-cwd-icon-vnd-oasis-opendocument-spreadsheet,.elfinder-cwd-icon-vnd-oasis-opendocument-spreadsheet-template,.elfinder-cwd-icon-vnd-openxmlformats-officedocument-spreadsheetml-sheet,.elfinder-cwd-icon-vnd-openxmlformats-officedocument-spreadsheetml-template{background-position:0 -850px}.elfinder-cwd-icon-vnd-oasis-opendocument-presentation,.elfinder-cwd-icon-vnd-oasis-opendocument-presentation-template,.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-presentation,.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-slide,.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-slideshow,.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-template{background-position:0 -900px}.elfinder-cwd-icon-vnd-oasis-opendocument-text,.elfinder-cwd-icon-vnd-oasis-opendocument-text-master,.elfinder-cwd-icon-vnd-oasis-opendocument-text-template,.elfinder-cwd-icon-vnd-oasis-opendocument-text-web,.elfinder-cwd-icon-vnd-openxmlformats-officedocument-wordprocessingml-document,.elfinder-cwd-icon-vnd-openxmlformats-officedocument-wordprocessingml-template{background-position:0 -950px}.elfinder-cwd-icon-x-7z-compressed,.elfinder-cwd-icon-x-bzip,.elfinder-cwd-icon-x-bzip2,.elfinder-cwd-icon-x-gzip,.elfinder-cwd-icon-x-rar,.elfinder-cwd-icon-x-rar-compressed,.elfinder-cwd-icon-x-tar,.elfinder-cwd-icon-x-xz,.elfinder-cwd-icon-x-zip,.elfinder-cwd-icon-zip{background-position:0 -1000px}.elfinder-cwd-icon-postscript{background-position:0 -1050px}.elfinder-cwd-icon-vnd-adobe-photoshop{background-position:0 -1100px}.elfinder-cwd-icon-vnd-adobe-photoshop:before{content:none!important}.elfinder-cwd-icon-x-shockwave-flash{background-position:0 -1150px}.elfinder-cwd-icon-vnd-android-package-archive{background-position:0 -1200px}.elfinder-cwd-icon-vnd-android-package-archive:before{content:none!important}.elfinder-cwd-icon-x-c,.elfinder-cwd-icon-x-c--,.elfinder-cwd-icon-x-c--hdr,.elfinder-cwd-icon-x-c--src,.elfinder-cwd-icon-x-chdr,.elfinder-cwd-icon-x-csrc{background-position:0 -1250px}.elfinder-cwd-icon-css{background-position:0 -1300px}.elfinder-cwd-icon-html{background-position:0 -1350px}.elfinder-cwd-icon-x-jar,.elfinder-cwd-icon-x-java,.elfinder-cwd-icon-x-java-source{background-position:0 -1400px}.elfinder-cwd-icon-x-jar:before,.elfinder-cwd-icon-x-java-source:before,.elfinder-cwd-icon-x-java:before{content:none!important}.elfinder-cwd-icon-javascript,.elfinder-cwd-icon-x-javascript{background-position:0 -1450px}.elfinder-cwd-icon-json{background-position:0 -1500px}.elfinder-cwd-icon-json:before{content:none!important}.elfinder-cwd-icon-markdown,.elfinder-cwd-icon-x-markdown{background-position:0 -1550px}.elfinder-cwd-icon-markdown:before,.elfinder-cwd-icon-x-markdown:before{content:none!important}.elfinder-cwd-icon-x-perl{background-position:0 -1600px}.elfinder-cwd-icon-x-php{background-position:0 -1650px}.elfinder-cwd-icon-x-python,.elfinder-cwd-icon-x-python:after{background-position:0 -1700px}.elfinder-cwd-icon-x-ruby{background-position:0 -1750px}.elfinder-cwd-icon-x-sh,.elfinder-cwd-icon-x-shellscript{background-position:0 -1800px}.elfinder-cwd-icon-sql,.elfinder-cwd-icon-x-sql,.elfinder-cwd-icon-x-sqlite3{background-position:0 -1850px}.elfinder-cwd-icon-svg,.elfinder-cwd-icon-svg-xml,.elfinder-cwd-icon-x-eps{background-position:0 -1900px}.elfinder-cwd-icon-xml,.elfinder-cwd-icon-xml:after{background-position:0 -1950px}.elfinder-cwd-icon-x-zip:before,.elfinder-cwd-icon-zip:before{content:'zip'!important}.elfinder-cwd-icon-x-xz:before{content:'xz'!important}.elfinder-cwd-icon-x-7z-compressed:before{content:'7z'!important}.elfinder-cwd-icon-x-gzip:before{content:'gzip'!important}.elfinder-cwd-icon-x-tar:before{content:'tar'!important}.elfinder-cwd-icon-x-bzip2:before,.elfinder-cwd-icon-x-bzip:before{content:'bzip'!important}.elfinder-cwd-icon-x-rar-compressed:before,.elfinder-cwd-icon-x-rar:before{content:'rar'!important}.elfinder-toolbar{background:#1E88E5;-webkit-border-radius:0;border-radius:0;border:0;padding:5px 0}.elfinder-toolbar .elfinder-button-icon{font-size:20px;color:#fff;margin-top:-2px}.elfinder-buttonset{-webkit-border-radius:0;border-radius:0;border:0;margin:0 5px;height:24px}.elfinder .elfinder-button{background:transparent;-webkit-border-radius:0;border-radius:0;cursor:pointer;color:#fff}.elfinder-toolbar-button-separator{border:0}.elfinder-button-menu{-webkit-border-radius:2px;border-radius:2px;-webkit-box-shadow:0 1px 6px rgba(0, 0, 0, 0.3);box-shadow:0 1px 6px rgba(0, 0, 0, 0.3);border:none;margin-top:5px}.elfinder-button-menu-item{color:#666;padding:6px 19px}.elfinder-button-menu-item.ui-state-hover{color:#141414;background-color:#f5f4f4}.elfinder-button-menu-item-separated{border-top:1px solid #e5e5e5}.elfinder-button-menu-item-separated.ui-state-hover{border-top:1px solid #e5e5e5}.elfinder .elfinder-button-search{margin:0 10px;min-height:inherit;overflow:hidden}.elfinder .elfinder-button-search .ui-icon{color:#fff!important}.elfinder .elfinder-button-search input{background:rgba(16, 96, 167, 0.79);-webkit-border-radius:2px;border-radius:2px;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;border:0;margin:0;padding:0 23px;height:24px!important;color:#fff}.elfinder .elfinder-button-search .elfinder-button-menu{margin-top:4px;border:none;-webkit-box-shadow:0 1px 3px rgba(0, 0, 0, 0.5);box-shadow:0 1px 3px rgba(0, 0, 0, 0.5)}.elfinder .elfinder-button-search-menu{-webkit-border-radius:0;border-radius:0;top:30px!important}.elfinder .elfinder-button-search-menu .ui-button{padding:0.4em 1em!important}.elfinder .elfinder-navbar{background:#f3f3f3;-webkit-box-shadow:0 1px 8px rgba(0, 0, 0, 0.6);box-shadow:0 1px 8px rgba(0, 0, 0, 0.6);border:none}.elfinder .elfinder-navbar .elfinder-lock,.elfinder .elfinder-navbar .elfinder-perms,.elfinder .elfinder-navbar .elfinder-symlink{color:#1d1d1d;opacity:0.8}.elfinder-navbar-dir{color:#525252;cursor:pointer;-webkit-border-radius:2px;border-radius:2px;padding:5px;border:none}.elfinder-navbar-dir .elfinder-navbar-icon{color:#1976D2}.elfinder-navbar-dir.ui-state-active.ui-state-hover,.elfinder-navbar-dir.ui-state-hover{background:#1a83df;color:#fff;border:none}.elfinder-navbar-dir.ui-state-active.ui-state-hover .elfinder-navbar-icon,.elfinder-navbar-dir.ui-state-hover .elfinder-navbar-icon{color:#fff}.elfinder-disabled .elfinder-navbar .ui-state-active,.elfinder-navbar .ui-state-active{background:#1E88E5;color:#fff!important;border:none}.elfinder-disabled .elfinder-navbar .ui-state-active.elfinder-navbar-dir .elfinder-navbar-icon,.elfinder-navbar .ui-state-active.elfinder-navbar-dir .elfinder-navbar-icon{color:#fff!important}.elfinder-workzone{background:#fff}.elfinder-cwd-file{color:#555}.elfinder-cwd-file.ui-selected.ui-state-hover,.elfinder-cwd-file.ui-state-hover{background:#42A5F5;color:#ddd}.elfinder-cwd-file.ui-selected{background:#339ef4;color:#555}.elfinder-cwd-filename input,.elfinder-cwd-filename textarea{padding:2px;-webkit-border-radius:2px!important;border-radius:2px!important;background:#fff;color:#222}.elfinder-cwd-filename input:focus,.elfinder-cwd-filename textarea:focus{outline:none;border:1px solid #555}.elfinder-cwd-view-icons .elfinder-cwd-file .elfinder-cwd-filename.ui-state-hover,.elfinder-cwd-view-icons .elfinder-cwd-file .ui-state-active,.elfinder-cwd-view-icons .elfinder-cwd-file .ui-state-hover,.elfinder-disabled .elfinder-cwd-view-icons .elfinder-cwd-file .elfinder-cwd-filename.ui-state-hover,.elfinder-disabled .elfinder-cwd table td.ui-state-hover{background:transparent;color:#ddd}.elfinder-cwd table{padding:0}.elfinder-cwd table thead td{padding:5px 14px}.elfinder-cwd table tr{border:0!important}.elfinder-cwd table tr:nth-child(odd){background-color:transparent}.elfinder-cwd table tr:nth-child(odd).ui-state-hover{background-color:#42A5F5}.elfinder-cwd.elfinder-table-header-sticky table{border:0}.elfinder-cwd .elfinder-lock,.elfinder-cwd .elfinder-perms,.elfinder-cwd .elfinder-symlink{color:#4d4d4d}.elfinder-cwd-view-icons .elfinder-lock{top:0}.elfinder-cwd-view-list thead td .ui-resizable-handle{top:3px}.elfinder-cwd-view-list .elfinder-lock,.elfinder-cwd-view-list .elfinder-perms,.elfinder-cwd-view-list .elfinder-symlink{font-size:14px;opacity:0.7}.elfinder-cwd-view-list .elfinder-perms{left:inherit}#elfinder-elfinder-cwd-thead td{background:#1976D2;color:#fff}#elfinder-elfinder-cwd-thead td.ui-state-active,#elfinder-elfinder-cwd-thead td.ui-state-hover{background:#1669bb}#elfinder-elfinder-cwd-thead td.ui-state-active.ui-state-hover{background:#176ec4}.elfinder .ui-selectable-helper{border:1px solid #2196F3;background-color:rgba(33, 138, 232, 0.5)}.elfinder-cwd-wrapper.elfinder-cwd-wrapper-trash{background-color:#eee}.elfinder-cwd-wrapper.elfinder-cwd-wrapper-trash .elfinder-cwd-file{color:#333}.elfinder-cwd-wrapper.elfinder-cwd-wrapper-trash .elfinder-cwd-file.ui-selected.ui-state-hover,.elfinder-cwd-wrapper.elfinder-cwd-wrapper-trash .elfinder-cwd-file.ui-state-hover{background:#42A5F5;color:#ddd}.elfinder-cwd-wrapper.elfinder-cwd-wrapper-trash .elfinder-cwd-file.ui-selected{background:#339ef4;color:#555}.elfinder-info-title .elfinder-cwd-icon:before{top:32px;display:block;margin:0 auto}.elfinder-info-title .elfinder-cwd-icon.elfinder-cwd-bgurl:before{background-color:#313131!important}.elfinder-cwd-view-icons .elfinder-cwd-icon.elfinder-cwd-bgurl:before{left:inherit;background-color:#313131}.elfinder-cwd-icon:before,.elfinder-cwd-size1 .elfinder-cwd-icon.elfinder-cwd-bgurl:before,.elfinder-cwd-size1 .elfinder-cwd-icon:before,.elfinder-cwd-size2 .elfinder-cwd-icon.elfinder-cwd-bgurl:before,.elfinder-cwd-size2 .elfinder-cwd-icon:before,.elfinder-cwd-size3 .elfinder-cwd-icon.elfinder-cwd-bgurl:before,.elfinder-cwd-size3 .elfinder-cwd-icon:before,.elfinder-quicklook .elfinder-cwd-icon:before{top:35px;left:50%!important;position:relative!important;display:block!important;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%);max-width:52px;color:#fff}.elfinder .elfinder-cwd-view-icons .elfinder-cwd-bgurl:after,.elfinder .elfinder-quicklook-info-wrapper .elfinder-cwd-bgurl:after{display:none}.elfinder-cwd-size1 .elfinder-cwd-icon.elfinder-cwd-bgurl:before{top:53px;-webkit-transform:scale(1.32) translateX(-50%);-ms-transform:scale(1.32) translateX(-50%);transform:scale(1.32) translateX(-50%)}.elfinder-cwd-size2 .elfinder-cwd-icon.elfinder-cwd-bgurl:before{top:74px;-webkit-transform:scale(1.53) translateX(-50%);-ms-transform:scale(1.53) translateX(-50%);transform:scale(1.53) translateX(-50%)}.elfinder-cwd-size3 .elfinder-cwd-icon.elfinder-cwd-bgurl:before{top:87px;-webkit-transform:scale(2.22) translateX(-50%);-ms-transform:scale(2.22) translateX(-50%);transform:scale(2.22) translateX(-50%)}.elfinder .elfinder-statusbar{background:#2196F3;-webkit-border-radius:0;border-radius:0;border:0;color:#fff}.elfinder-path,.elfinder-stat-size{margin:0 15px}.elfinder input,.elfinder select{padding:4px;color:#666;background:#fff;-webkit-border-radius:3px;border-radius:3px;font-weight:normal;border-color:#888;-webkit-box-shadow:none!important;box-shadow:none!important}.elfinder input.ui-state-hover,.elfinder select.ui-state-hover{background:#fff!important;color:#666!important}.elfinder input[type=checkbox]{position:relative;height:initial}.elfinder input[type=checkbox]:after,.elfinder input[type=checkbox]:focus:after{content:"";display:block;width:12px;height:12px;border:1px solid #707070;background-color:#fff;-webkit-border-radius:2px;border-radius:2px}.elfinder input[type=checkbox]:checked:before{content:"";position:absolute;top:-3px;left:6px;display:table;width:4px;height:12px;border:2px solid #707070;border-top-width:0;border-left-width:0;-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.elfinder .ui-button,.elfinder .ui-button.ui-state-default,.elfinder .ui-button:active{display:inline-block;font-weight:normal;text-align:center;vertical-align:middle;cursor:pointer;white-space:nowrap;-webkit-border-radius:3px;border-radius:3px;text-transform:uppercase;-webkit-box-shadow:1px 1px 4px rgba(0, 0, 0, 0.4)!important;box-shadow:1px 1px 4px rgba(0, 0, 0, 0.4)!important;-webkit-transition:all 0.4s;-o-transition:all 0.4s;transition:all 0.4s;background:#fff;color:#222;border:none;padding:7px 6px}.elfinder .ui-button .ui-icon,.elfinder .ui-button.ui-state-default .ui-icon,.elfinder .ui-button:active .ui-icon{color:#222}.elfinder .ui-button.ui-state-active,.elfinder .ui-button.ui-state-hover,.elfinder .ui-button:active,.elfinder .ui-button:focus,.elfinder .ui-button:hover,.elfinder a.ui-button:active{background:#3498db!important;color:#fff!important;border:none}.elfinder .ui-button.ui-state-active .ui-icon,.elfinder .ui-button.ui-state-hover .ui-icon,.elfinder .ui-button:active .ui-icon,.elfinder .ui-button:focus .ui-icon,.elfinder .ui-button:hover .ui-icon,.elfinder a.ui-button:active .ui-icon{color:#fff}.elfinder .ui-button.ui-state-active:hover{background:#217dbb;color:#fff;border:none}.elfinder .ui-button:focus{outline:none!important}.elfinder .ui-controlgroup-horizontal .ui-button{-webkit-border-radius:0;border-radius:0;border:0}.elfinder .elfinder-resize-preset-container .ui-button,.elfinder input:not([type=checkbox]){height:21px}.elfinder .elfinder-contextmenu,.elfinder .elfinder-contextmenu-sub{-webkit-border-radius:2px;border-radius:2px;-webkit-box-shadow:0 1px 6px rgba(0, 0, 0, 0.3);box-shadow:0 1px 6px rgba(0, 0, 0, 0.3);border:none}.elfinder .elfinder-contextmenu-separator,.elfinder .elfinder-contextmenu-sub-separator{border-top:1px solid #e5e5e5}.elfinder .elfinder-contextmenu-item{color:#666;padding:5px 30px}.elfinder .elfinder-contextmenu-item.ui-state-hover{background-color:#f5f4f4;color:#141414}.elfinder .elfinder-contextmenu-item.ui-state-active{background-color:#2196f3;color:#fff}.elfinder .elfinder-dialog{-webkit-border-radius:0;border-radius:0;border:0;-webkit-box-shadow:0 1px 30px rgba(0, 0, 0, 0.6);box-shadow:0 1px 30px rgba(0, 0, 0, 0.6)}.elfinder .elfinder-dialog .ui-dialog-content[id*=edit-elfinder-elfinder-]{padding:0}.elfinder .elfinder-dialog .ui-tabs{-webkit-border-radius:0;border-radius:0;border:0;padding:0}.elfinder .elfinder-dialog .ui-tabs-nav{-webkit-border-radius:0;border-radius:0;border:0;background:transparent;border-bottom:1px solid #ddd}.elfinder .elfinder-dialog .ui-tabs-nav li{border:0;font-weight:normal;background:transparent;margin:0;padding:0}.elfinder .elfinder-dialog .ui-tabs-nav li a{padding:7px 9px}.elfinder .elfinder-dialog .ui-tabs-nav .ui-state-active a,.elfinder .elfinder-dialog .ui-tabs-nav .ui-tabs-selected a,.elfinder .elfinder-dialog .ui-tabs-nav li:hover a{-webkit-box-shadow:inset 0 -2px 0 #3498db;box-shadow:inset 0 -2px 0 #3498db;color:#3498db}.elfinder .elfinder-dialog .ui-tabs .elfinder-tabstop.ui-state-hover{background:transparent;-webkit-box-shadow:inset 0 -2px 0 #3498db;box-shadow:inset 0 -2px 0 #3498db;color:#3498db}.elfinder .elfinder-dialog label.ui-state-hover{background:transparent}.elfinder .elfinder-dialog .ui-resizable-se{display:none}.std42-dialog .ui-dialog-titlebar{background:#1565C0;-webkit-border-radius:0;border-radius:0;border:0}.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-button .ui-icon{border-color:inherit;-webkit-transition:0.2s ease-out;-o-transition:0.2s ease-out;transition:0.2s ease-out;opacity:0.8;color:#fff;width:auto;height:auto;font-size:12px;padding:3px}.std42-dialog,.std42-dialog.elfinder-bg-translucent,.std42-dialog.elfinder-bg-translucent .ui-widget-content,.std42-dialog .ui-dialog-content{background-color:#fff}.std42-dialog .ui-dialog-buttonpane button{margin:-1px 2px 2px;padding:7px 6px}.std42-dialog .ui-dialog-buttonpane button span.ui-icon{padding:0}.std42-dialog .ui-dialog-buttonpane .ui-dialog-buttonset.elfinder-edit-extras select{margin-top:0}.std42-dialog,.std42-dialog .ui-widget-content{background-color:#fff}.elfinder-mobile .std42-dialog .ui-dialog-titlebar .ui-dialog-titlebar-close .ui-icon,.std42-dialog .ui-dialog-titlebar .ui-dialog-titlebar-close:hover .ui-icon{background-color:#f44336}.elfinder-mobile .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-full .ui-icon,.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-full:hover .ui-icon{background-color:#4caf50}.elfinder-mobile .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-minimize .ui-icon,.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-minimize:hover .ui-icon{background-color:#ff9800}.elfinder-dialog-title{color:#f1f1f1}.elfinder .ui-widget-content{font-family:"Noto Sans", sans-serif;color:#546e7a}.elfinder-upload-dialog-wrapper .elfinder-upload-dirselect{width:inherit;height:inherit;padding:7px;margin-left:5px;color:#222;-webkit-box-shadow:1px 1px 4px rgba(0, 0, 0, 0.4);box-shadow:1px 1px 4px rgba(0, 0, 0, 0.4);background:#fff;bottom:4px;-webkit-border-radius:2px;border-radius:2px}.elfinder-upload-dialog-wrapper .elfinder-upload-dirselect.ui-state-hover{background:#3498db!important;color:#fff!important;outline:none}.elfinder-upload-dialog-wrapper .ui-button{padding:0.4em 3px;margin:0 -15px 0 19px}.elfinder-upload-dropbox{border:2px dashed #bbb}.elfinder-upload-dropbox:focus{outline:none}.elfinder-upload-dropbox.ui-state-hover{background:#f1f1f1;border:2px dashed #bbb}.elfinder-dialog-resize .elfinder-resize-control-panel{margin-left:-5px}.elfinder-dialog-resize .elfinder-resize-control-panel .ui-button{height:inherit;margin-bottom:5px}.elfinder-help *{color:#546e7a}.elfinder-help a{color:#3498db}.elfinder-help a:hover{color:#217dbb}.elfinder .ui-slider.ui-slider-horizontal{height:2px;border:0;background-color:#bababa!important}.elfinder .ui-slider .ui-slider-handle{background-image:none;background-color:#5d5858;-webkit-border-radius:50%;border-radius:50%;border:0;margin-top:-3px}.elfinder .ui-slider .ui-slider-handle.ui-state-hover{background:#5d5858!important;-webkit-box-shadow:none!important;box-shadow:none!important;-webkit-border-radius:50%;border-radius:50%;cursor:pointer}.elfinder-quicklook{background:#232323;-webkit-border-radius:2px;border-radius:2px}.elfinder-quicklook-titlebar{background:inherit}.elfinder-quicklook-titlebar-icon .ui-icon{background:transparent;color:#fff}.elfinder-quicklook-fullscreen .elfinder-quicklook-navbar{border:inherit;opacity:inherit;-webkit-border-radius:4px;border-radius:4px;background:rgba(66, 66, 66, 0.73)}.elfinder .elfinder-navdock{border:0}.elfinder-mobile .elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-close,.elfinder-mobile .elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-full,.elfinder-mobile .elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-minimize,.elfinder-mobile .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-full .ui-icon,.elfinder-mobile .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-minimize .ui-icon,.elfinder-mobile .std42-dialog .ui-dialog-titlebar .ui-dialog-titlebar-close .ui-icon,.elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-close:hover,.elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-full:hover,.elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-minimize:hover,.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-full:hover .ui-icon,.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-minimize:hover .ui-icon,.std42-dialog .ui-dialog-titlebar .ui-dialog-titlebar-close:hover .ui-icon{background-image:none}
/*!
 * elFinder-Material-Theme (Default) v2.1.9 (https://github.com/RobiNN1/elFinder-Material-Theme)
 * Copyright 2016-2019 Róbert Kelčák {RobiNN}
 * Licensed under MIT (https://github.com/RobiNN1/elFinder-Material-Theme/blob/master/LICENSE)
 */
@import url("https://fonts.googleapis.com/css?family=Noto+Sans:400,400i,700,700i&subset=cyrillic,cyrillic-ext,devanagari,greek,greek-ext,latin-ext,vietnamese");
.elfinder {
  color: #546e7a;
  font-family: "Noto Sans", sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}
.elfinder.ui-widget.ui-widget-content {
  font-family: "Noto Sans", sans-serif;
  -webkit-box-shadow: 0 1px 8px rgba(0, 0, 0, 0.6);
  box-shadow: 0 1px 8px rgba(0, 0, 0, 0.6);
  -webkit-border-radius: 0;
  border-radius: 0;
  border: 0;
}
.elfinder * {
  outline: 0 !important;
}
/**
 * Loading
 */
.elfinder-info-spinner,
.elfinder-navbar-spinner,
.elfinder-button-icon-spinner {
  background: url("../images/loading.svg") center center no-repeat !important;
  width: 16px;
  height: 16px;
}
/**
 * Progress Bar
 */
@-webkit-keyframes progress-animation {
  from {
    background-position: 1rem 0;
  }
  to {
    background-position: 0 0;
  }
}
@keyframes progress-animation {
  from {
    background-position: 1rem 0;
  }
  to {
    background-position: 0 0;
  }
}
.elfinder-notify-progressbar {
  border: 0;
}
.elfinder-notify-progress,
.elfinder-notify-progressbar {
  -webkit-border-radius: 0;
  border-radius: 0;
}
.elfinder-notify-progress,
.elfinder-resize-spinner {
  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: 1rem 1rem;
  background-size: 1rem 1rem;
  -webkit-animation: progress-animation 1s linear infinite;
  animation: progress-animation 1s linear infinite;
  background-color: #0275d8;
  height: 1rem;
}
/**
 * Toast Notification
 */
.elfinder .elfinder-toast > div {
  background-color: #323232 !important;
  color: #d6d6d6;
  -webkit-box-shadow: none;
  box-shadow: none;
  opacity: inherit;
  padding: 10px 60px;
}
.elfinder .elfinder-toast > div button.ui-button {
  color: #fff;
}
.elfinder .elfinder-toast > .toast-info button.ui-button {
  background-color: #3498db;
}
.elfinder .elfinder-toast > .toast-error button.ui-button {
  background-color: #f44336;
}
.elfinder .elfinder-toast > .toast-success button.ui-button {
  background-color: #4caf50;
}
.elfinder .elfinder-toast > .toast-warning button.ui-button {
  background-color: #ff9800;
}
.elfinder-toast-msg {
  font-family: "Noto Sans", sans-serif;
  font-size: 17px;
}
/**
 * For Ace Editor
 */
#ace_settingsmenu {
  font-family: "Noto Sans", sans-serif;
  -webkit-box-shadow: 0 1px 30px rgba(0, 0, 0, 0.6) !important;
  box-shadow: 0 1px 30px rgba(0, 0, 0, 0.6) !important;
  background-color: #1d2736 !important;
  color: #e6e6e6 !important;
}
#ace_settingsmenu,
#kbshortcutmenu {
  padding: 0;
}
.ace_optionsMenuEntry {
  padding: 5px 10px;
}
.ace_optionsMenuEntry:hover {
  background-color: #111721;
}
.ace_optionsMenuEntry label {
  font-size: 13px;
}
#ace_settingsmenu input[type="text"],
#ace_settingsmenu select {
  margin: 1px 2px 2px;
  padding: 2px 5px;
  -webkit-border-radius: 3px;
  border-radius: 3px;
  border: 0;
  background: rgba(9, 53, 121, 0.75);
  color: white !important;
}
/**
 * Icons
 */
@font-face {
  font-family: material;
  src: url("../icons/material.eot?91804974");
  src: url("../icons/material.eot?91804974#iefix") format("embedded-opentype"), url("../icons/material.woff2?91804974") format("woff2"), url("../icons/material.woff?91804974") format("woff"), url("../icons/material.ttf?91804974") format("truetype"), url("../icons/material.svg?91804974#material") format("svg");
  font-weight: normal;
  font-style: normal;
}
@media screen and (-webkit-min-device-pixel-ratio: 0) {
  @font-face {
    font-family: material;
    src: url("../icons/material.svg?91804974#material") format("svg");
  }
}
.elfinder .ui-icon,
.elfinder-button-icon,
.ui-widget-header .ui-icon,
.ui-widget-content .ui-icon {
  font: normal normal normal 14px/1 material;
  background-image: inherit;
  text-indent: inherit;
}
.elfinder .ui-button-icon-only .ui-icon {
  font: normal normal normal 14px/1 material;
  background-image: inherit !important;
  text-indent: 0;
  font-size: 16px;
}
.elfinder-button-icon {
  background: inherit;
}
.elfinder-button-icon-home:before {
  content: '\e800';
}
.elfinder-button-icon-back:before {
  content: '\e801';
}
.elfinder-button-icon-forward:before {
  content: '\e802';
}
.elfinder-button-icon-up:before {
  content: '\e803';
}
.elfinder-button-icon-dir:before {
  content: '\e804';
}
.elfinder-button-icon-opendir:before {
  content: '\e805';
}
.elfinder-button-icon-reload:before {
  content: '\e806';
}
.elfinder-button-icon-open:before {
  content: '\e807';
}
.elfinder-button-icon-mkdir:before {
  content: '\e808';
}
.elfinder-button-icon-mkfile:before {
  content: '\e809';
}
.elfinder-button-icon-rm:before {
  content: '\e80a';
}
.elfinder-button-icon-trash:before {
  content: '\e80b';
}
.elfinder-button-icon-restore:before {
  content: '\e80c';
}
.elfinder-button-icon-copy:before {
  content: '\e80d';
}
.elfinder-button-icon-cut:before {
  content: '\e80e';
}
.elfinder-button-icon-paste:before {
  content: '\e80f';
}
.elfinder-button-icon-getfile:before {
  content: '\e810';
}
.elfinder-button-icon-duplicate:before {
  content: '\e811';
}
.elfinder-button-icon-rename:before {
  content: '\e812';
}
.elfinder-button-icon-edit:before {
  content: '\e813';
}
.elfinder-button-icon-quicklook:before {
  content: '\e814';
}
.elfinder-button-icon-upload:before {
  content: '\e815';
}
.elfinder-button-icon-download:before {
  content: '\e816';
}
.elfinder-button-icon-info:before {
  content: '\e817';
}
.elfinder-button-icon-extract:before {
  content: '\e818';
}
.elfinder-button-icon-archive:before {
  content: '\e819';
}
.elfinder-button-icon-view:before {
  content: '\e81a';
}
.elfinder-button-icon-view-list:before {
  content: '\e81b';
}
.elfinder-button-icon-help:before {
  content: '\e81c';
}
.elfinder-button-icon-resize:before {
  content: '\e81d';
}
.elfinder-button-icon-link:before {
  content: '\e81e';
}
.elfinder-button-icon-search:before {
  content: '\e81f';
}
.elfinder-button-icon-sort:before {
  content: '\e820';
}
.elfinder-button-icon-rotate-r:before {
  content: '\e821';
}
.elfinder-button-icon-rotate-l:before {
  content: '\e822';
}
.elfinder-button-icon-netmount:before {
  content: '\e823';
}
.elfinder-button-icon-netunmount:before {
  content: '\e824';
}
.elfinder-button-icon-places:before {
  content: '\e825';
}
.elfinder-button-icon-chmod:before {
  content: '\e826';
}
.elfinder-button-icon-accept:before {
  content: '\e827';
}
.elfinder-button-icon-menu:before {
  content: '\e828';
}
.elfinder-button-icon-colwidth:before {
  content: '\e829';
}
.elfinder-button-icon-fullscreen:before {
  content: '\e82a';
}
.elfinder-button-icon-unfullscreen:before {
  content: '\e82b';
}
.elfinder-button-icon-empty:before {
  content: '\e82c';
}
.elfinder-button-icon-undo:before {
  content: '\e82d';
}
.elfinder-button-icon-redo:before {
  content: '\e82e';
}
.elfinder-button-icon-preference:before {
  content: '\e82f';
}
.elfinder-button-icon-mkdirin:before {
  content: '\e830';
}
.elfinder-button-icon-selectall:before {
  content: '\e831';
}
.elfinder-button-icon-selectnone:before {
  content: '\e832';
}
.elfinder-button-icon-selectinvert:before {
  content: '\e833';
}
.elfinder-button-icon-logout:before {
  content: '\e85a';
}
.elfinder-button-icon-opennew:before {
  content: '\e85b';
}
.elfinder-button-icon-hide:before {
  content: '\e85d';
}
.elfinder-button-search .ui-icon.ui-icon-search {
  font-size: 17px;
}
.elfinder-button-search .ui-icon:hover {
  opacity: 1;
}
.elfinder-navbar-icon {
  font: normal normal normal 16px/1 material;
  background-image: inherit !important;
}
.elfinder-navbar-icon:before {
  content: '\e804';
}
.elfinder-droppable-active .elfinder-navbar-icon:before,
.elfinder .ui-state-active .elfinder-navbar-icon:before,
.elfinder .ui-state-hover .elfinder-navbar-icon:before {
  content: '\e805';
}
.elfinder-navbar-root-local .elfinder-navbar-icon:before {
  content: '\e83d' !important;
}
.elfinder-navbar-root-ftp .elfinder-navbar-icon:before {
  content: '\e823' !important;
}
.elfinder-navbar-root-sql .elfinder-navbar-icon:before {
  content: '\e83e' !important;
}
.elfinder-navbar-root-dropbox .elfinder-navbar-icon:before {
  content: '\e83f' !important;
}
.elfinder-navbar-root-googledrive .elfinder-navbar-icon:before {
  content: '\e840' !important;
}
.elfinder-navbar-root-onedrive .elfinder-navbar-icon:before {
  content: '\e841' !important;
}
.elfinder-navbar-root-box .elfinder-navbar-icon:before {
  content: '\e842' !important;
}
.elfinder-navbar-root-trash .elfinder-navbar-icon:before {
  content: '\e80b' !important;
}
.elfinder-navbar-root-zip .elfinder-navbar-icon:before {
  content: '\e85c' !important;
}
.elfinder-navbar-root-network .elfinder-navbar-icon:before {
  content: '\e823' !important;
}
.elfinder-places .elfinder-navbar-root .elfinder-navbar-icon:before {
  content: '\e825' !important;
}
.elfinder-navbar-arrow {
  background-image: inherit !important;
  font: normal normal normal 14px/1 material;
  font-size: 10px;
  padding-top: 3px;
  padding-left: 2px;
  color: #a9a9a9;
}
.elfinder .ui-state-active .elfinder-navbar-arrow {
  color: #fff;
}
.elfinder-ltr .elfinder-navbar-collapsed .elfinder-navbar-arrow:before {
  content: '\e857';
}
.elfinder-rtl .elfinder-navbar-collapsed .elfinder-navbar-arrow:before {
  content: '\e858';
}
.elfinder-ltr .elfinder-navbar-expanded .elfinder-navbar-arrow:before,
.elfinder-rtl .elfinder-navbar-expanded .elfinder-navbar-arrow:before {
  content: '\e851';
}
div.elfinder-cwd-wrapper-list tr.ui-state-default td span.ui-icon {
  font-size: 8px;
  margin-top: 5px;
  margin-right: 5px;
}
div.elfinder-cwd-wrapper-list .ui-icon-grip-dotted-vertical {
  margin: 2px;
}
.elfinder-cwd-view-list .elfinder-navbar-root-local td .elfinder-cwd-icon,
.elfinder-navbar-root-local .elfinder-cwd-icon,
.elfinder-cwd-view-list .elfinder-navbar-root-ftp td .elfinder-cwd-icon,
.elfinder-navbar-root-ftp .elfinder-cwd-icon,
.elfinder-cwd-view-list .elfinder-navbar-root-sql td .elfinder-cwd-icon,
.elfinder-navbar-root-sql .elfinder-cwd-icon,
.elfinder-cwd-view-list .elfinder-navbar-root-dropbox td .elfinder-cwd-icon,
.elfinder-navbar-root-dropbox .elfinder-cwd-icon,
.elfinder-cwd-view-list .elfinder-navbar-root-googledrive td .elfinder-cwd-icon,
.elfinder-navbar-root-googledrive .elfinder-cwd-icon,
.elfinder-cwd-view-list .elfinder-navbar-root-onedrive td .elfinder-cwd-icon,
.elfinder-navbar-root-onedrive .elfinder-cwd-icon,
.elfinder-cwd-view-list .elfinder-navbar-root-box td .elfinder-cwd-icon,
.elfinder-navbar-root-box .elfinder-cwd-icon,
.elfinder-cwd-view-list .elfinder-navbar-root-trash td .elfinder-cwd-icon,
.elfinder-navbar-root-trash .elfinder-cwd-icon,
.elfinder-cwd-view-list .elfinder-navbar-root-zip td .elfinder-cwd-icon,
.elfinder-navbar-root-zip .elfinder-cwd-icon,
.elfinder-cwd-view-list .elfinder-navbar-root-network td .elfinder-cwd-icon,
.elfinder-navbar-root-network .elfinder-cwd-icon {
  background-image: inherit;
}
.elfinder-cwd-view-list .elfinder-navbar-root-local td .elfinder-cwd-icon:before,
.elfinder-navbar-root-local .elfinder-cwd-icon:before,
.elfinder-cwd-view-list .elfinder-navbar-root-ftp td .elfinder-cwd-icon:before,
.elfinder-navbar-root-ftp .elfinder-cwd-icon:before,
.elfinder-cwd-view-list .elfinder-navbar-root-sql td .elfinder-cwd-icon:before,
.elfinder-navbar-root-sql .elfinder-cwd-icon:before,
.elfinder-cwd-view-list .elfinder-navbar-root-dropbox td .elfinder-cwd-icon:before,
.elfinder-navbar-root-dropbox .elfinder-cwd-icon:before,
.elfinder-cwd-view-list .elfinder-navbar-root-googledrive td .elfinder-cwd-icon:before,
.elfinder-navbar-root-googledrive .elfinder-cwd-icon:before,
.elfinder-cwd-view-list .elfinder-navbar-root-onedrive td .elfinder-cwd-icon:before,
.elfinder-navbar-root-onedrive .elfinder-cwd-icon:before,
.elfinder-cwd-view-list .elfinder-navbar-root-box td .elfinder-cwd-icon:before,
.elfinder-navbar-root-box .elfinder-cwd-icon:before,
.elfinder-cwd-view-list .elfinder-navbar-root-trash td .elfinder-cwd-icon:before,
.elfinder-navbar-root-trash .elfinder-cwd-icon:before,
.elfinder-cwd-view-list .elfinder-navbar-root-zip td .elfinder-cwd-icon:before,
.elfinder-navbar-root-zip .elfinder-cwd-icon:before,
.elfinder-cwd-view-list .elfinder-navbar-root-network td .elfinder-cwd-icon:before,
.elfinder-navbar-root-network .elfinder-cwd-icon:before {
  font-family: material;
  background-color: transparent;
  color: #525252;
  font-size: 55px;
  position: relative;
  top: -10px !important;
  padding: 0;
  display: contents !important;
}
.elfinder-cwd-view-list .elfinder-navbar-root-local td .elfinder-cwd-icon:before,
.elfinder-navbar-root-local .elfinder-cwd-icon:before {
  content: '\e83d';
}
.elfinder-cwd-view-list .elfinder-navbar-root-ftp td .elfinder-cwd-icon:before,
.elfinder-navbar-root-ftp .elfinder-cwd-icon:before {
  content: '\e823';
}
.elfinder-cwd-view-list .elfinder-navbar-root-sql td .elfinder-cwd-icon:before,
.elfinder-navbar-root-sql .elfinder-cwd-icon:before {
  content: '\e83e';
}
.elfinder-cwd-view-list .elfinder-navbar-roor-dropbox td .elfinder-cwd-icon:before,
.elfinder-navbar-roor-dropbox .elfinder-cwd-icon:before {
  content: '\e83f';
}
.elfinder-cwd-view-list .elfinder-navbar-roor-googledrive td .elfinder-cwd-icon:before,
.elfinder-navbar-roor-googledrive .elfinder-cwd-icon:before {
  content: '\e840';
}
.elfinder-cwd-view-list .elfinder-navbar-roor-onedrive td .elfinder-cwd-icon:before,
.elfinder-navbar-roor-onedrive .elfinder-cwd-icon:before {
  content: '\e841';
}
.elfinder-cwd-view-list .elfinder-navbar-roor-box td .elfinder-cwd-icon:before,
.elfinder-navbar-roor-box .elfinder-cwd-icon:before {
  content: '\e842';
}
.elfinder-cwd-view-list .elfinder-navbar-root-trash td .elfinder-cwd-icon:before,
.elfinder-navbar-root-trash .elfinder-cwd-icon:before {
  content: '\e80b';
}
.elfinder-cwd-view-list .elfinder-navbar-root-zip td .elfinder-cwd-icon:before,
.elfinder-navbar-root-zip .elfinder-cwd-icon:before {
  content: '\e85c';
}
.elfinder-cwd-view-list .elfinder-navbar-root-network td .elfinder-cwd-icon:before,
.elfinder-navbar-root-network .elfinder-cwd-icon:before {
  content: '\e823';
}
.elfinder-dialog-icon {
  font: normal normal normal 14px/1 material;
  background: inherit;
  color: #524949;
  font-size: 37px;
}
.elfinder-dialog-icon:before {
  content: '\e843';
}
.elfinder-dialog-icon-mkdir:before {
  content: '\e808';
}
.elfinder-dialog-icon-mkfile:before {
  content: '\e809';
}
.elfinder-dialog-icon-copy:before {
  content: '\e80d';
}
.elfinder-dialog-icon-prepare:before,
.elfinder-dialog-icon-move:before {
  content: '\e844';
}
.elfinder-dialog-icon-upload:before,
.elfinder-dialog-icon-chunkmerge:before {
  content: '\e815';
}
.elfinder-dialog-icon-rm:before {
  content: '\e80a';
}
.elfinder-dialog-icon-open:before,
.elfinder-dialog-icon-readdir:before,
.elfinder-dialog-icon-file:before {
  content: '\e807';
}
.elfinder-dialog-icon-reload:before {
  content: '\e806';
}
.elfinder-dialog-icon-download:before {
  content: '\e816';
}
.elfinder-dialog-icon-save:before {
  content: '\e845';
}
.elfinder-dialog-icon-rename:before {
  content: '\e812';
}
.elfinder-dialog-icon-zipdl:before,
.elfinder-dialog-icon-archive:before {
  content: '\e819';
}
.elfinder-dialog-icon-extract:before {
  content: '\e818';
}
.elfinder-dialog-icon-search:before {
  content: '\e81f';
}
.elfinder-dialog-icon-loadimg:before {
  content: '\e846';
}
.elfinder-dialog-icon-url:before {
  content: '\e81e';
}
.elfinder-dialog-icon-resize:before {
  content: '\e81d';
}
.elfinder-dialog-icon-netmount:before {
  content: '\e823';
}
.elfinder-dialog-icon-netunmount:before {
  content: '\e824';
}
.elfinder-dialog-icon-chmod:before {
  content: '\e826';
}
.elfinder-dialog-icon-preupload:before,
.elfinder-dialog-icon-dim:before {
  content: '\e847';
}
.elfinder-contextmenu .elfinder-contextmenu-item span.elfinder-contextmenu-icon {
  font-size: 16px;
}
.elfinder-contextmenu .elfinder-contextmenu-item .elfinder-contextsubmenu-item .ui-icon {
  font-size: 15px;
}
.elfinder-contextmenu .elfinder-contextmenu-item .elfinder-button-icon-link:before {
  content: '\e837';
}
.elfinder .elfinder-contextmenu-extra-icon {
  margin-top: -6px;
}
.elfinder .elfinder-contextmenu-extra-icon a {
  padding: 5px;
  margin: -16px;
}
.elfinder-button-icon-link:before {
  content: '\e81e' !important;
}
.elfinder .elfinder-contextmenu-arrow {
  font: normal normal normal 14px/1 material;
  background-image: inherit;
  font-size: 10px !important;
  padding-top: 3px;
}
.elfinder .elfinder-contextmenu-arrow:before {
  content: '\e857';
}
.elfinder-contextmenu .ui-state-hover .elfinder-contextmenu-arrow {
  background-image: inherit;
}
.elfinder-quicklook .ui-resizable-se {
  background: inherit;
}
.elfinder-quicklook-navbar-icon {
  background: transparent;
  font: normal normal normal 14px/1 material;
  font-size: 32px;
  color: #fff;
}
.elfinder-quicklook-titlebar-icon {
  margin-top: -8px;
}
.elfinder-quicklook-titlebar-icon .ui-icon {
  border: 0;
  opacity: 0.8;
  font-size: 15px;
  padding: 1px;
}
.elfinder-quicklook-titlebar .ui-icon-circle-close,
.elfinder-quicklook .ui-icon-gripsmall-diagonal-se {
  color: #f1f1f1;
}
.elfinder-quicklook-navbar-icon-prev:before {
  content: '\e848';
}
.elfinder-quicklook-navbar-icon-next:before {
  content: '\e849';
}
.elfinder-quicklook-navbar-icon-fullscreen:before {
  content: '\e84a';
}
.elfinder-quicklook-navbar-icon-fullscreen-off:before {
  content: '\e84b';
}
.elfinder-quicklook-navbar-icon-close:before {
  content: '\e84c';
}
.elfinder .ui-button-icon {
  background-image: inherit;
}
.elfinder .ui-icon-search:before {
  content: '\e81f';
}
.elfinder .ui-icon-closethick:before,
.elfinder .ui-icon-close:before {
  content: '\e839';
}
.elfinder .ui-icon-circle-close:before {
  content: '\e84c';
}
.elfinder .ui-icon-gear:before {
  content: '\e82f';
}
.elfinder .ui-icon-gripsmall-diagonal-se:before {
  content: '\e838';
}
.elfinder .ui-icon-locked:before {
  content: '\e834';
}
.elfinder .ui-icon-unlocked:before {
  content: '\e836';
}
.elfinder .ui-icon-arrowrefresh-1-n:before {
  content: '\e821';
}
.elfinder .ui-icon-plusthick:before {
  content: '\e83a';
}
.elfinder .ui-icon-arrowreturnthick-1-s:before {
  content: '\e83b';
}
.elfinder .ui-icon-minusthick:before {
  content: '\e83c';
}
.elfinder .ui-icon-pin-s:before {
  content: '\e84d';
}
.elfinder .ui-icon-check:before {
  content: '\e84e';
}
.elfinder .ui-icon-arrowthick-1-s:before {
  content: '\e84f';
}
.elfinder .ui-icon-arrowthick-1-n:before {
  content: '\e850';
}
.elfinder .ui-icon-triangle-1-s:before {
  content: '\e851';
}
.elfinder .ui-icon-triangle-1-n:before {
  content: '\e852';
}
.elfinder .ui-icon-grip-dotted-vertical:before {
  content: '\e853';
}
.elfinder-lock,
.elfinder-perms,
.elfinder-symlink {
  background-image: inherit;
  font: normal normal normal 18px/1 material;
  color: #d8d8d8;
}
.elfinder-na .elfinder-perms:before {
  content: '\e824';
}
.elfinder-ro .elfinder-perms:before {
  content: '\e835';
}
.elfinder-wo .elfinder-perms:before {
  content: '\e854';
}
.elfinder-group .elfinder-perms:before {
  content: '\e800';
}
.elfinder-lock:before {
  content: '\e84d';
}
.elfinder-symlink:before {
  content: '\e837';
}
.elfinder .elfinder-toast > div {
  font: normal normal normal 14px/1 material;
}
.elfinder .elfinder-toast > div:before {
  font-size: 45px;
  position: absolute;
  left: 5px;
  top: 15px;
}
.elfinder .elfinder-toast > .toast-info,
.elfinder .elfinder-toast > .toast-error,
.elfinder .elfinder-toast > .toast-success,
.elfinder .elfinder-toast > .toast-warning {
  background-image: inherit !important;
}
.elfinder .elfinder-toast > .toast-info:before {
  content: '\e817';
  color: #3498db;
}
.elfinder .elfinder-toast > .toast-error:before {
  content: '\e855';
  color: #f44336;
}
.elfinder .elfinder-toast > .toast-success:before {
  content: '\e84e';
  color: #4caf50;
}
.elfinder .elfinder-toast > .toast-warning:before {
  content: '\e856';
  color: #ff9800;
}
.elfinder-drag-helper-icon-status {
  font: normal normal normal 14px/1 material;
  background: inherit;
}
.elfinder-drag-helper-icon-status:before {
  content: '\e824';
}
.elfinder-drag-helper-move .elfinder-drag-helper-icon-status {
  -webkit-transform: rotate(180deg);
  -ms-transform: rotate(180deg);
  transform: rotate(180deg);
}
.elfinder-drag-helper-move .elfinder-drag-helper-icon-status:before {
  content: '\e854';
}
.elfinder-drag-helper-plus .elfinder-drag-helper-icon-status {
  -webkit-transform: rotate(90deg);
  -ms-transform: rotate(90deg);
  transform: rotate(90deg);
}
.elfinder-drag-helper-plus .elfinder-drag-helper-icon-status:before {
  content: '\e84c';
}
/**
 * MIME Types
 */
.elfinder-cwd-view-list td .elfinder-cwd-icon {
  background-image: url("../images/icons-small.svg");
}
.elfinder-cwd-icon {
  background: url("../images/icons-big.svg") 0 0 no-repeat;
  -webkit-border-radius: 0;
  border-radius: 0;
}
.elfinder-cwd-icon:before {
  font-size: 10px;
  position: relative;
  top: 27px;
  left: inherit;
  padding: 1px;
  background-color: transparent;
}
.elfinder-cwd-icon-directory {
  background-position: 0 -50px;
}
.elfinder-cwd .elfinder-droppable-active .elfinder-cwd-icon {
  background-position: 0 -100px;
}
.elfinder-cwd-icon-group {
  background-position: 0 -150px;
}
.elfinder-cwd-icon-application {
  background-position: 0 -200px;
}
.elfinder-cwd-icon-rtf,
.elfinder-cwd-icon-rtfd,
.elfinder-cwd-icon-text {
  background-position: 0 -250px;
}
.elfinder-cwd-icon-image {
  background-position: 0 -300px;
}
.elfinder-cwd-icon-audio {
  background-position: 0 -350px;
}
.elfinder-cwd-icon-video,
.elfinder-cwd-icon-flash-video,
.elfinder-cwd-icon-dash-xml,
.elfinder-cwd-icon-vnd-apple-mpegurl,
.elfinder-cwd-icon-x-mpegurl {
  background-position: 0 -400px;
}
.elfinder-cwd-icon-plain,
.elfinder-cwd-icon-x-empty {
  background-position: 0 -450px;
}
.elfinder-cwd-icon-pdf {
  background-position: 0 -500px;
}
.elfinder-cwd-icon-vnd-ms-office {
  background-position: 0 -550px;
}
.elfinder-cwd-icon-x-msaccess {
  background-position: 0 -600px;
}
.elfinder-cwd-icon-x-msaccess:before {
  content: none !important;
}
.elfinder-cwd-icon-ms-excel,
.elfinder-cwd-icon-vnd-ms-excel,
.elfinder-cwd-icon-vnd-ms-excel-addin-macroEnabled-12,
.elfinder-cwd-icon-vnd-ms-excel-sheet-binary-macroEnabled-12,
.elfinder-cwd-icon-vnd-ms-excel-sheet-macroEnabled-12,
.elfinder-cwd-icon-vnd-ms-excel-template-macroEnabled-12 {
  background-position: 0 -650px;
}
.elfinder-cwd-icon-ms-excel:before,
.elfinder-cwd-icon-vnd-ms-excel:before,
.elfinder-cwd-icon-vnd-ms-excel-addin-macroEnabled-12:before,
.elfinder-cwd-icon-vnd-ms-excel-sheet-binary-macroEnabled-12:before,
.elfinder-cwd-icon-vnd-ms-excel-sheet-macroEnabled-12:before,
.elfinder-cwd-icon-vnd-ms-excel-template-macroEnabled-12:before {
  content: none !important;
}
.elfinder-cwd-icon-vnd-ms-powerpoint,
.elfinder-cwd-icon-vnd-ms-powerpoint-addin-macroEnabled-12,
.elfinder-cwd-icon-vnd-ms-powerpoint-presentation-macroEnabled-12,
.elfinder-cwd-icon-vnd-ms-powerpoint-slide-macroEnabled-12,
.elfinder-cwd-icon-vnd-ms-powerpoint-slideshow-macroEnabled-12,
.elfinder-cwd-icon-vnd-ms-powerpoint-template-macroEnabled-12 {
  background-position: 0 -700px;
}
.elfinder-cwd-icon-vnd-ms-powerpoint:before,
.elfinder-cwd-icon-vnd-ms-powerpoint-addin-macroEnabled-12:before,
.elfinder-cwd-icon-vnd-ms-powerpoint-presentation-macroEnabled-12:before,
.elfinder-cwd-icon-vnd-ms-powerpoint-slide-macroEnabled-12:before,
.elfinder-cwd-icon-vnd-ms-powerpoint-slideshow-macroEnabled-12:before,
.elfinder-cwd-icon-vnd-ms-powerpoint-template-macroEnabled-12:before {
  content: none !important;
}
.elfinder-cwd-icon-msword,
.elfinder-cwd-icon-vnd-ms-word,
.elfinder-cwd-icon-vnd-ms-word-document-macroEnabled-12,
.elfinder-cwd-icon-vnd-ms-word-template-macroEnabled-12 {
  background-position: 0 -750px;
}
.elfinder-cwd-icon-msword:before,
.elfinder-cwd-icon-vnd-ms-word:before,
.elfinder-cwd-icon-vnd-ms-word-document-macroEnabled-12:before,
.elfinder-cwd-icon-vnd-ms-word-template-macroEnabled-12:before {
  content: none !important;
}
.elfinder-cwd-icon-vnd-oasis-opendocument-base,
.elfinder-cwd-icon-vnd-oasis-opendocument-chart,
.elfinder-cwd-icon-vnd-oasis-opendocument-database,
.elfinder-cwd-icon-vnd-oasis-opendocument-formula,
.elfinder-cwd-icon-vnd-oasis-opendocument-graphics,
.elfinder-cwd-icon-vnd-oasis-opendocument-graphics-template,
.elfinder-cwd-icon-vnd-oasis-opendocument-image,
.elfinder-cwd-icon-vnd-openofficeorg-extension {
  background-position: 0 -800px;
}
.elfinder-cwd-icon-vnd-oasis-opendocument-spreadsheet,
.elfinder-cwd-icon-vnd-oasis-opendocument-spreadsheet-template,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-spreadsheetml-sheet,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-spreadsheetml-template {
  background-position: 0 -850px;
}
.elfinder-cwd-icon-vnd-oasis-opendocument-presentation,
.elfinder-cwd-icon-vnd-oasis-opendocument-presentation-template,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-presentation,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-slide,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-slideshow,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-template {
  background-position: 0 -900px;
}
.elfinder-cwd-icon-vnd-oasis-opendocument-text,
.elfinder-cwd-icon-vnd-oasis-opendocument-text-master,
.elfinder-cwd-icon-vnd-oasis-opendocument-text-template,
.elfinder-cwd-icon-vnd-oasis-opendocument-text-web,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-wordprocessingml-document,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-wordprocessingml-template {
  background-position: 0 -950px;
}
.elfinder-cwd-icon-zip,
.elfinder-cwd-icon-x-zip,
.elfinder-cwd-icon-x-xz,
.elfinder-cwd-icon-x-7z-compressed,
.elfinder-cwd-icon-x-gzip,
.elfinder-cwd-icon-x-tar,
.elfinder-cwd-icon-x-bzip,
.elfinder-cwd-icon-x-bzip2,
.elfinder-cwd-icon-x-rar,
.elfinder-cwd-icon-x-rar-compressed {
  background-position: 0 -1000px;
}
.elfinder-cwd-icon-postscript {
  background-position: 0 -1050px;
}
.elfinder-cwd-icon-vnd-adobe-photoshop {
  background-position: 0 -1100px;
}
.elfinder-cwd-icon-vnd-adobe-photoshop:before {
  content: none !important;
}
.elfinder-cwd-icon-x-shockwave-flash {
  background-position: 0 -1150px;
}
.elfinder-cwd-icon-vnd-android-package-archive {
  background-position: 0 -1200px;
}
.elfinder-cwd-icon-vnd-android-package-archive:before {
  content: none !important;
}
.elfinder-cwd-icon-x-c,
.elfinder-cwd-icon-x-csrc,
.elfinder-cwd-icon-x-chdr,
.elfinder-cwd-icon-x-c--,
.elfinder-cwd-icon-x-c--src,
.elfinder-cwd-icon-x-c--hdr {
  background-position: 0 -1250px;
}
.elfinder-cwd-icon-css {
  background-position: 0 -1300px;
}
.elfinder-cwd-icon-html {
  background-position: 0 -1350px;
}
.elfinder-cwd-icon-x-jar,
.elfinder-cwd-icon-x-java,
.elfinder-cwd-icon-x-java-source {
  background-position: 0 -1400px;
}
.elfinder-cwd-icon-x-jar:before,
.elfinder-cwd-icon-x-java:before,
.elfinder-cwd-icon-x-java-source:before {
  content: none !important;
}
.elfinder-cwd-icon-javascript,
.elfinder-cwd-icon-x-javascript {
  background-position: 0 -1450px;
}
.elfinder-cwd-icon-json {
  background-position: 0 -1500px;
}
.elfinder-cwd-icon-json:before {
  content: none !important;
}
.elfinder-cwd-icon-markdown,
.elfinder-cwd-icon-x-markdown {
  background-position: 0 -1550px;
}
.elfinder-cwd-icon-markdown:before,
.elfinder-cwd-icon-x-markdown:before {
  content: none !important;
}
.elfinder-cwd-icon-x-perl {
  background-position: 0 -1600px;
}
.elfinder-cwd-icon-x-php {
  background-position: 0 -1650px;
}
.elfinder-cwd-icon-x-python:after,
.elfinder-cwd-icon-x-python {
  background-position: 0 -1700px;
}
.elfinder-cwd-icon-x-ruby {
  background-position: 0 -1750px;
}
.elfinder-cwd-icon-x-sh,
.elfinder-cwd-icon-x-shellscript {
  background-position: 0 -1800px;
}
.elfinder-cwd-icon-sql,
.elfinder-cwd-icon-x-sql,
.elfinder-cwd-icon-x-sqlite3 {
  background-position: 0 -1850px;
}
.elfinder-cwd-icon-x-eps,
.elfinder-cwd-icon-svg,
.elfinder-cwd-icon-svg-xml {
  background-position: 0 -1900px;
}
.elfinder-cwd-icon-xml:after,
.elfinder-cwd-icon-xml {
  background-position: 0 -1950px;
}
.elfinder-cwd-icon-zip:before,
.elfinder-cwd-icon-x-zip:before {
  content: 'zip' !important;
}
.elfinder-cwd-icon-x-xz:before {
  content: 'xz' !important;
}
.elfinder-cwd-icon-x-7z-compressed:before {
  content: '7z' !important;
}
.elfinder-cwd-icon-x-gzip:before {
  content: 'gzip' !important;
}
.elfinder-cwd-icon-x-tar:before {
  content: 'tar' !important;
}
.elfinder-cwd-icon-x-bzip:before,
.elfinder-cwd-icon-x-bzip2:before {
  content: 'bzip' !important;
}
.elfinder-cwd-icon-x-rar:before,
.elfinder-cwd-icon-x-rar-compressed:before {
  content: 'rar' !important;
}
/**
 * Toolbar
 */
.elfinder-toolbar {
  background: #061325;
  -webkit-border-radius: 0;
  border-radius: 0;
  border: 0;
  padding: 5px 0;
}
.elfinder-toolbar .elfinder-button-icon {
  font-size: 20px;
  color: #ddd;
  margin-top: -2px;
}
.elfinder-buttonset {
  -webkit-border-radius: 0;
  border-radius: 0;
  border: 0;
  margin: 0 5px;
  height: 24px;
}
.elfinder .elfinder-button {
  background: transparent;
  -webkit-border-radius: 0;
  border-radius: 0;
  cursor: pointer;
  color: #efefef;
}
.elfinder-toolbar-button-separator {
  border: 0;
}
.elfinder-button-menu {
  -webkit-border-radius: 2px;
  border-radius: 2px;
  -webkit-box-shadow: 0 1px 6px rgba(0, 0, 0, 0.3);
  box-shadow: 0 1px 6px rgba(0, 0, 0, 0.3);
  border: none;
  margin-top: 5px;
}
.elfinder-button-menu-item {
  color: #666;
  padding: 6px 19px;
}
.elfinder-button-menu-item.ui-state-hover {
  color: #141414;
  background-color: #f5f4f4;
}
.elfinder-button-menu-item-separated {
  border-top: 1px solid #e5e5e5;
}
.elfinder-button-menu-item-separated.ui-state-hover {
  border-top: 1px solid #e5e5e5;
}
.elfinder .elfinder-button-search {
  margin: 0 10px;
  min-height: inherit;
  overflow: hidden;
}
.elfinder .elfinder-button-search .ui-icon {
  color: #fff !important;
}
.elfinder .elfinder-button-search input {
  background: rgba(22, 43, 76, 0.75);
  -webkit-border-radius: 2px;
  border-radius: 2px;
  -webkit-box-sizing: content-box;
  -moz-box-sizing: content-box;
  box-sizing: content-box;
  border: 0;
  margin: 0;
  padding: 0 23px;
  height: 24px !important;
  color: #fff;
}
.elfinder .elfinder-button-search .elfinder-button-menu {
  margin-top: 4px;
  border: none;
  -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.5);
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.5);
}
.elfinder .elfinder-button-search-menu {
  -webkit-border-radius: 0;
  border-radius: 0;
  top: 30px !important;
}
.elfinder .elfinder-button-search-menu .ui-button {
  padding: 0.4em 1em !important;
}
/**
 * Navbar
 */
.elfinder .elfinder-navbar {
  background: #2a384d;
  -webkit-box-shadow: 0 1px 8px rgba(0, 0, 0, 0.6);
  box-shadow: 0 1px 8px rgba(0, 0, 0, 0.6);
  border: none;
}
.elfinder .elfinder-navbar .elfinder-lock,
.elfinder .elfinder-navbar .elfinder-perms,
.elfinder .elfinder-navbar .elfinder-symlink {
  color: #000;
  opacity: 0.8;
}
.elfinder-navbar-dir {
  color: #e6e6e6;
  cursor: pointer;
  -webkit-border-radius: 2px;
  border-radius: 2px;
  padding: 5px;
  border: none;
}
.elfinder-navbar-dir .elfinder-navbar-icon {
  color: #fff;
}
.elfinder-navbar-dir.ui-state-hover,
.elfinder-navbar-dir.ui-state-active.ui-state-hover {
  background: #17202c;
  color: #e6e6e6;
  border: none;
}
.elfinder-navbar-dir.ui-state-hover .elfinder-navbar-icon,
.elfinder-navbar-dir.ui-state-active.ui-state-hover .elfinder-navbar-icon {
  color: #fff;
}
.elfinder-navbar .ui-state-active,
.elfinder-disabled .elfinder-navbar .ui-state-active {
  background: #1b2533;
  color: #e8e8e8 !important;
  border: none;
}
.elfinder-navbar .ui-state-active.elfinder-navbar-dir .elfinder-navbar-icon,
.elfinder-disabled .elfinder-navbar .ui-state-active.elfinder-navbar-dir .elfinder-navbar-icon {
  color: #e8e8e8 !important;
}
/**
 * Workzone
 */
.elfinder-workzone {
  background: #0e1827;
}
.elfinder-cwd-file {
  color: #ddd;
}
.elfinder-cwd-file.ui-state-hover,
.elfinder-cwd-file.ui-selected.ui-state-hover {
  background: #1a283c;
  color: #ddd;
}
.elfinder-cwd-file.ui-selected {
  background: #152131;
  color: #ddd;
}
.elfinder-cwd-filename input,
.elfinder-cwd-filename textarea {
  padding: 2px;
  -webkit-border-radius: 2px !important;
  border-radius: 2px !important;
  background: #fff;
  color: #222;
}
.elfinder-cwd-filename input:focus,
.elfinder-cwd-filename textarea:focus {
  outline: none;
  border: 1px solid #555;
}
.elfinder-cwd-view-icons .elfinder-cwd-file .ui-state-hover,
.elfinder-cwd-view-icons .elfinder-cwd-file .elfinder-cwd-filename.ui-state-hover,
.elfinder-disabled .elfinder-cwd-view-icons .elfinder-cwd-file .elfinder-cwd-filename.ui-state-hover,
.elfinder-disabled .elfinder-cwd table td.ui-state-hover,
.elfinder-cwd-view-icons .elfinder-cwd-file .ui-state-active {
  background: transparent;
  color: #ddd;
}
.elfinder-cwd table {
  padding: 0;
}
.elfinder-cwd table thead td {
  padding: 5px 14px;
}
.elfinder-cwd table tr {
  border: 0 !important;
}
.elfinder-cwd table tr:nth-child(odd) {
  background-color: transparent;
}
.elfinder-cwd table tr:nth-child(odd).ui-state-hover {
  background-color: #1a283c;
}
.elfinder-cwd.elfinder-table-header-sticky table {
  border: 0;
}
.elfinder-cwd .elfinder-lock,
.elfinder-cwd .elfinder-perms,
.elfinder-cwd .elfinder-symlink {
  color: #d8d8d8;
}
.elfinder-cwd-view-icons .elfinder-lock {
  top: 0;
}
.elfinder-cwd-view-list thead td .ui-resizable-handle {
  top: 3px;
}
.elfinder-cwd-view-list .elfinder-lock,
.elfinder-cwd-view-list .elfinder-perms,
.elfinder-cwd-view-list .elfinder-symlink {
  font-size: 14px;
  opacity: 0.7;
}
.elfinder-cwd-view-list .elfinder-perms {
  left: inherit;
}
#elfinder-elfinder-cwd-thead td {
  background: #010e21;
  color: #ddd;
}
#elfinder-elfinder-cwd-thead td.ui-state-hover,
#elfinder-elfinder-cwd-thead td.ui-state-active {
  background: #000308;
}
#elfinder-elfinder-cwd-thead td.ui-state-active.ui-state-hover {
  background: #010812;
}
.elfinder .ui-selectable-helper {
  border: 1px solid #022861;
  background-color: rgba(3, 62, 150, 0.38);
}
.elfinder-cwd-wrapper.elfinder-cwd-wrapper-trash {
  background-color: #e4e4e4;
}
.elfinder-cwd-wrapper.elfinder-cwd-wrapper-trash .elfinder-cwd-file {
  color: #333;
}
.elfinder-cwd-wrapper.elfinder-cwd-wrapper-trash .elfinder-cwd-file.ui-state-hover,
.elfinder-cwd-wrapper.elfinder-cwd-wrapper-trash .elfinder-cwd-file.ui-selected.ui-state-hover {
  background: #1a283c;
  color: #ddd;
}
.elfinder-cwd-wrapper.elfinder-cwd-wrapper-trash .elfinder-cwd-file.ui-selected {
  background: #152131;
  color: #ddd;
}
.elfinder-info-title .elfinder-cwd-icon:before {
  top: 32px;
  display: block;
  margin: 0 auto;
}
.elfinder-info-title .elfinder-cwd-icon.elfinder-cwd-bgurl:before {
  background-color: #313131 !important;
}
.elfinder-cwd-view-icons .elfinder-cwd-icon.elfinder-cwd-bgurl:before {
  left: inherit;
  background-color: #313131;
}
.elfinder-cwd-icon:before,
.elfinder-quicklook .elfinder-cwd-icon:before,
.elfinder-cwd-size1 .elfinder-cwd-icon:before,
.elfinder-cwd-size2 .elfinder-cwd-icon:before,
.elfinder-cwd-size3 .elfinder-cwd-icon:before,
.elfinder-cwd-size1 .elfinder-cwd-icon.elfinder-cwd-bgurl:before,
.elfinder-cwd-size2 .elfinder-cwd-icon.elfinder-cwd-bgurl:before,
.elfinder-cwd-size3 .elfinder-cwd-icon.elfinder-cwd-bgurl:before {
  top: 35px;
  left: 50% !important;
  position: relative !important;
  display: block !important;
  -webkit-transform: translateX(-50%);
  -ms-transform: translateX(-50%);
  transform: translateX(-50%);
  max-width: 52px;
  color: #fff;
}
.elfinder .elfinder-cwd-view-icons .elfinder-cwd-bgurl:after,
.elfinder .elfinder-quicklook-info-wrapper .elfinder-cwd-bgurl:after {
  display: none;
}
.elfinder-cwd-size1 .elfinder-cwd-icon.elfinder-cwd-bgurl:before {
  top: 53px;
  -webkit-transform: scale(1.32) translateX(-50%);
  -ms-transform: scale(1.32) translateX(-50%);
  transform: scale(1.32) translateX(-50%);
}
.elfinder-cwd-size2 .elfinder-cwd-icon.elfinder-cwd-bgurl:before {
  top: 74px;
  -webkit-transform: scale(1.53) translateX(-50%);
  -ms-transform: scale(1.53) translateX(-50%);
  transform: scale(1.53) translateX(-50%);
}
.elfinder-cwd-size3 .elfinder-cwd-icon.elfinder-cwd-bgurl:before {
  top: 87px;
  -webkit-transform: scale(2.22) translateX(-50%);
  -ms-transform: scale(2.22) translateX(-50%);
  transform: scale(2.22) translateX(-50%);
}
/**
 * Status Bar
 */
.elfinder .elfinder-statusbar {
  background: #061325;
  -webkit-border-radius: 0;
  border-radius: 0;
  border: 0;
  color: #cfd2d4;
}
.elfinder-path,
.elfinder-stat-size {
  margin: 0 15px;
}
/**
 * Input & Select
 */
.elfinder input,
.elfinder select {
  padding: 4px;
  color: #666;
  background: #fff;
  -webkit-border-radius: 3px;
  border-radius: 3px;
  font-weight: normal;
  border-color: #888;
  -webkit-box-shadow: none !important;
  box-shadow: none !important;
}
.elfinder input.ui-state-hover,
.elfinder select.ui-state-hover {
  background: #fff !important;
  color: #666 !important;
}
.elfinder input[type="checkbox"] {
  position: relative;
  height: initial;
}
.elfinder input[type="checkbox"]:after,
.elfinder input[type="checkbox"]:focus:after {
  content: "";
  display: block;
  width: 12px;
  height: 12px;
  border: 1px solid #707070;
  background-color: #fff;
  -webkit-border-radius: 2px;
  border-radius: 2px;
}
.elfinder input[type="checkbox"]:checked:before {
  content: "";
  position: absolute;
  top: -3px;
  left: 6px;
  display: table;
  width: 4px;
  height: 12px;
  border: 2px solid #707070;
  border-top-width: 0;
  border-left-width: 0;
  -webkit-transform: rotate(45deg);
  -ms-transform: rotate(45deg);
  transform: rotate(45deg);
}
/**
 * Buttons
 */
.elfinder .ui-button,
.elfinder .ui-button:active,
.elfinder .ui-button.ui-state-default {
  display: inline-block;
  font-weight: normal;
  text-align: center;
  vertical-align: middle;
  cursor: pointer;
  white-space: nowrap;
  -webkit-border-radius: 3px;
  border-radius: 3px;
  text-transform: uppercase;
  -webkit-box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.4) !important;
  box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.4) !important;
  -webkit-transition: all 0.4s;
  -o-transition: all 0.4s;
  transition: all 0.4s;
  background: #fff;
  color: #222;
  border: none;
  padding: 7px 6px;
}
.elfinder .ui-button .ui-icon,
.elfinder .ui-button:active .ui-icon,
.elfinder .ui-button.ui-state-default .ui-icon {
  color: #222;
}
.elfinder .ui-button:hover,
.elfinder a.ui-button:active,
.elfinder .ui-button:active,
.elfinder .ui-button:focus,
.elfinder .ui-button.ui-state-hover,
.elfinder .ui-button.ui-state-active {
  background: #3498db !important;
  color: #fff !important;
  border: none;
}
.elfinder .ui-button:hover .ui-icon,
.elfinder a.ui-button:active .ui-icon,
.elfinder .ui-button:active .ui-icon,
.elfinder .ui-button:focus .ui-icon,
.elfinder .ui-button.ui-state-hover .ui-icon,
.elfinder .ui-button.ui-state-active .ui-icon {
  color: #fff;
}
.elfinder .ui-button.ui-state-active:hover {
  background: #217dbb;
  color: #fff;
  border: none;
}
.elfinder .ui-button:focus {
  outline: none !important;
}
.elfinder .ui-controlgroup-horizontal .ui-button {
  -webkit-border-radius: 0;
  border-radius: 0;
  border: 0;
}
.elfinder input:not([type="checkbox"]),
.elfinder .elfinder-resize-preset-container .ui-button {
  height: 21px;
}
/**
 * Context Menu
 */
.elfinder .elfinder-contextmenu,
.elfinder .elfinder-contextmenu-sub {
  -webkit-border-radius: 2px;
  border-radius: 2px;
  -webkit-box-shadow: 0 1px 6px rgba(0, 0, 0, 0.3);
  box-shadow: 0 1px 6px rgba(0, 0, 0, 0.3);
  border: none;
}
.elfinder .elfinder-contextmenu-separator,
.elfinder .elfinder-contextmenu-sub-separator {
  border-top: 1px solid #e5e5e5;
}
.elfinder .elfinder-contextmenu-item {
  color: #666;
  padding: 5px 30px;
}
.elfinder .elfinder-contextmenu-item.ui-state-hover {
  background-color: #f5f4f4;
  color: #141414;
}
.elfinder .elfinder-contextmenu-item.ui-state-active {
  background-color: #2196f3;
  color: #fff;
}
/**
 * Dialogs
 */
.elfinder .elfinder-dialog {
  -webkit-border-radius: 0;
  border-radius: 0;
  border: 0;
  -webkit-box-shadow: 0 1px 30px rgba(0, 0, 0, 0.6);
  box-shadow: 0 1px 30px rgba(0, 0, 0, 0.6);
}
.elfinder .elfinder-dialog .ui-dialog-content[id*="edit-elfinder-elfinder-"] {
  padding: 0;
}
.elfinder .elfinder-dialog .ui-tabs {
  -webkit-border-radius: 0;
  border-radius: 0;
  border: 0;
  padding: 0;
}
.elfinder .elfinder-dialog .ui-tabs-nav {
  -webkit-border-radius: 0;
  border-radius: 0;
  border: 0;
  background: transparent;
  border-bottom: 1px solid #ddd;
}
.elfinder .elfinder-dialog .ui-tabs-nav li {
  border: 0;
  font-weight: normal;
  background: transparent;
  margin: 0;
  padding: 0;
}
.elfinder .elfinder-dialog .ui-tabs-nav li a {
  padding: 7px 9px;
}
.elfinder .elfinder-dialog .ui-tabs-nav .ui-tabs-selected a,
.elfinder .elfinder-dialog .ui-tabs-nav .ui-state-active a,
.elfinder .elfinder-dialog .ui-tabs-nav li:hover a {
  -webkit-box-shadow: inset 0 -2px 0 #3498db;
  box-shadow: inset 0 -2px 0 #3498db;
  color: #3498db;
}
.elfinder .elfinder-dialog .ui-tabs .elfinder-tabstop.ui-state-hover {
  background: transparent;
  -webkit-box-shadow: inset 0 -2px 0 #3498db;
  box-shadow: inset 0 -2px 0 #3498db;
  color: #3498db;
}
.elfinder .elfinder-dialog label.ui-state-hover {
  background: transparent;
}
.elfinder .elfinder-dialog .ui-resizable-se {
  display: none;
}
.std42-dialog .ui-dialog-titlebar {
  background: #0f1f2f;
  -webkit-border-radius: 0;
  border-radius: 0;
  border: 0;
}
.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-button .ui-icon {
  border-color: inherit;
  -webkit-transition: 0.2s ease-out;
  -o-transition: 0.2s ease-out;
  transition: 0.2s ease-out;
  opacity: 0.8;
  color: #fff;
  width: auto;
  height: auto;
  font-size: 12px;
  padding: 3px;
}
.std42-dialog,
.std42-dialog .ui-dialog-content,
.std42-dialog.elfinder-bg-translucent,
.std42-dialog.elfinder-bg-translucent .ui-widget-content {
  background-color: #fff;
}
.std42-dialog .ui-dialog-buttonpane button {
  margin: -1px 2px 2px;
  padding: 7px 6px;
}
.std42-dialog .ui-dialog-buttonpane button span.ui-icon {
  padding: 0;
}
.std42-dialog .ui-dialog-buttonpane .ui-dialog-buttonset.elfinder-edit-extras select {
  margin-top: 0;
}
.std42-dialog,
.std42-dialog .ui-widget-content {
  background-color: #fff;
}
.elfinder-mobile .std42-dialog .ui-dialog-titlebar .ui-dialog-titlebar-close .ui-icon,
.std42-dialog .ui-dialog-titlebar .ui-dialog-titlebar-close:hover .ui-icon {
  background-color: #f44336;
}
.elfinder-mobile .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-full .ui-icon,
.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-full:hover .ui-icon {
  background-color: #4caf50;
}
.elfinder-mobile .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-minimize .ui-icon,
.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-minimize:hover .ui-icon {
  background-color: #ff9800;
}
.elfinder-dialog-title {
  color: #f1f1f1;
}
.elfinder .ui-widget-content {
  font-family: "Noto Sans", sans-serif;
  color: #546e7a;
}
.elfinder-upload-dialog-wrapper .elfinder-upload-dirselect {
  width: inherit;
  height: inherit;
  padding: 7px;
  margin-left: 5px;
  color: #222;
  -webkit-box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.4);
  box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.4);
  background: #fff;
  bottom: 4px;
  -webkit-border-radius: 2px;
  border-radius: 2px;
}
.elfinder-upload-dialog-wrapper .elfinder-upload-dirselect.ui-state-hover {
  background: #3498db !important;
  color: #fff !important;
  outline: none;
}
.elfinder-upload-dialog-wrapper .ui-button {
  padding: 0.4em 3px;
  margin: 0 -15px 0 19px;
}
.elfinder-upload-dropbox {
  border: 2px dashed #bbb;
}
.elfinder-upload-dropbox:focus {
  outline: none;
}
.elfinder-upload-dropbox.ui-state-hover {
  background: #f1f1f1;
  border: 2px dashed #bbb;
}
.elfinder-dialog-resize .elfinder-resize-control-panel {
  margin-left: -5px;
}
.elfinder-dialog-resize .elfinder-resize-control-panel .ui-button {
  height: inherit;
  margin-bottom: 5px;
}
.elfinder-help * {
  color: #546e7a;
}
.elfinder-help a {
  color: #3498db;
}
.elfinder-help a:hover {
  color: #217dbb;
}
.elfinder .ui-slider.ui-slider-horizontal {
  height: 2px;
  border: 0;
  background-color: #bababa !important;
}
.elfinder .ui-slider .ui-slider-handle {
  background-image: none;
  background-color: #5d5858;
  -webkit-border-radius: 50%;
  border-radius: 50%;
  border: 0;
  margin-top: -3px;
}
.elfinder .ui-slider .ui-slider-handle.ui-state-hover {
  background: #5d5858 !important;
  -webkit-box-shadow: none !important;
  box-shadow: none !important;
  -webkit-border-radius: 50%;
  border-radius: 50%;
  cursor: pointer;
}
/**
 * Quick Look
 */
.elfinder-quicklook {
  background: #232323;
  -webkit-border-radius: 2px;
  border-radius: 2px;
}
.elfinder-quicklook-titlebar {
  background: inherit;
}
.elfinder-quicklook-titlebar-icon .ui-icon {
  background: transparent;
  color: #fff;
}
.elfinder-quicklook-fullscreen .elfinder-quicklook-navbar {
  border: inherit;
  opacity: inherit;
  -webkit-border-radius: 4px;
  border-radius: 4px;
  background: rgba(66, 66, 66, 0.73);
}
.elfinder .elfinder-navdock {
  border: 0;
}
.std42-dialog .ui-dialog-titlebar .ui-dialog-titlebar-close:hover .ui-icon,
.elfinder-mobile .std42-dialog .ui-dialog-titlebar .ui-dialog-titlebar-close .ui-icon,
.elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-close:hover,
.elfinder-mobile .elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-close,
.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-minimize:hover .ui-icon,
.elfinder-mobile .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-minimize .ui-icon,
.elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-minimize:hover,
.elfinder-mobile .elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-minimize,
.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-full:hover .ui-icon,
.elfinder-mobile .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-full .ui-icon,
.elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-full:hover,
.elfinder-mobile .elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-full {
  background-image: none;
}
/*!
 * elFinder-Material-Theme (Default) v2.1.9 (https://github.com/RobiNN1/elFinder-Material-Theme)
 * Copyright 2016-2019 Róbert Kelčák {RobiNN}
 * Licensed under MIT (https://github.com/RobiNN1/elFinder-Material-Theme/blob/master/LICENSE)
 */@import url("https://fonts.googleapis.com/css?family=Noto+Sans:400,400i,700,700i&subset=cyrillic,cyrillic-ext,devanagari,greek,greek-ext,latin-ext,vietnamese");.elfinder{color:#546e7a;font-family:"Noto Sans", sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.elfinder.ui-widget.ui-widget-content{font-family:"Noto Sans", sans-serif;-webkit-box-shadow:0 1px 8px rgba(0, 0, 0, 0.6);box-shadow:0 1px 8px rgba(0, 0, 0, 0.6);-webkit-border-radius:0;border-radius:0;border:0}.elfinder *{outline:0!important}.elfinder-button-icon-spinner,.elfinder-info-spinner,.elfinder-navbar-spinner{background:url("../images/loading.svg") center center no-repeat!important;width:16px;height:16px}@-webkit-keyframes progress-animation{0%{background-position:1rem 0}to{background-position:0 0}}@keyframes progress-animation{0%{background-position:1rem 0}to{background-position:0 0}}.elfinder-notify-progressbar{border:0}.elfinder-notify-progress,.elfinder-notify-progressbar{-webkit-border-radius:0;border-radius:0}.elfinder-notify-progress,.elfinder-resize-spinner{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:1rem 1rem;background-size:1rem 1rem;-webkit-animation:progress-animation 1s linear infinite;animation:progress-animation 1s linear infinite;background-color:#0275d8;height:1rem}.elfinder .elfinder-toast>div{background-color:#323232!important;color:#d6d6d6;-webkit-box-shadow:none;box-shadow:none;opacity:inherit;padding:10px 60px}.elfinder .elfinder-toast>div button.ui-button{color:#fff}.elfinder .elfinder-toast>.toast-info button.ui-button{background-color:#3498db}.elfinder .elfinder-toast>.toast-error button.ui-button{background-color:#f44336}.elfinder .elfinder-toast>.toast-success button.ui-button{background-color:#4caf50}.elfinder .elfinder-toast>.toast-warning button.ui-button{background-color:#ff9800}.elfinder-toast-msg{font-family:"Noto Sans", sans-serif;font-size:17px}#ace_settingsmenu{font-family:"Noto Sans", sans-serif;-webkit-box-shadow:0 1px 30px rgba(0, 0, 0, 0.6)!important;box-shadow:0 1px 30px rgba(0, 0, 0, 0.6)!important;background-color:#1d2736!important;color:#e6e6e6!important}#ace_settingsmenu,#kbshortcutmenu{padding:0}.ace_optionsMenuEntry{padding:5px 10px}.ace_optionsMenuEntry:hover{background-color:#111721}.ace_optionsMenuEntry label{font-size:13px}#ace_settingsmenu input[type=text],#ace_settingsmenu select{margin:1px 2px 2px;padding:2px 5px;-webkit-border-radius:3px;border-radius:3px;border:0;background:rgba(9, 53, 121, 0.75);color:white!important}@font-face{font-family:material;src:url("../icons/material.eot?91804974");src:url("../icons/material.eot?91804974#iefix") format("embedded-opentype"), url("../icons/material.woff2?91804974") format("woff2"), url("../icons/material.woff?91804974") format("woff"), url("../icons/material.ttf?91804974") format("truetype"), url("../icons/material.svg?91804974#material") format("svg");font-weight:normal;font-style:normal}@media screen and (-webkit-min-device-pixel-ratio:0){@font-face{font-family:material;src:url("../icons/material.svg?91804974#material") format("svg")}}.elfinder-button-icon,.elfinder .ui-icon,.ui-widget-content .ui-icon,.ui-widget-header .ui-icon{font:normal normal normal 14px/1 material;background-image:inherit;text-indent:inherit}.elfinder .ui-button-icon-only .ui-icon{font:normal normal normal 14px/1 material;background-image:inherit!important;text-indent:0;font-size:16px}.elfinder-button-icon{background:inherit}.elfinder-button-icon-home:before{content:'\e800'}.elfinder-button-icon-back:before{content:'\e801'}.elfinder-button-icon-forward:before{content:'\e802'}.elfinder-button-icon-up:before{content:'\e803'}.elfinder-button-icon-dir:before{content:'\e804'}.elfinder-button-icon-opendir:before{content:'\e805'}.elfinder-button-icon-reload:before{content:'\e806'}.elfinder-button-icon-open:before{content:'\e807'}.elfinder-button-icon-mkdir:before{content:'\e808'}.elfinder-button-icon-mkfile:before{content:'\e809'}.elfinder-button-icon-rm:before{content:'\e80a'}.elfinder-button-icon-trash:before{content:'\e80b'}.elfinder-button-icon-restore:before{content:'\e80c'}.elfinder-button-icon-copy:before{content:'\e80d'}.elfinder-button-icon-cut:before{content:'\e80e'}.elfinder-button-icon-paste:before{content:'\e80f'}.elfinder-button-icon-getfile:before{content:'\e810'}.elfinder-button-icon-duplicate:before{content:'\e811'}.elfinder-button-icon-rename:before{content:'\e812'}.elfinder-button-icon-edit:before{content:'\e813'}.elfinder-button-icon-quicklook:before{content:'\e814'}.elfinder-button-icon-upload:before{content:'\e815'}.elfinder-button-icon-download:before{content:'\e816'}.elfinder-button-icon-info:before{content:'\e817'}.elfinder-button-icon-extract:before{content:'\e818'}.elfinder-button-icon-archive:before{content:'\e819'}.elfinder-button-icon-view:before{content:'\e81a'}.elfinder-button-icon-view-list:before{content:'\e81b'}.elfinder-button-icon-help:before{content:'\e81c'}.elfinder-button-icon-resize:before{content:'\e81d'}.elfinder-button-icon-link:before{content:'\e81e'}.elfinder-button-icon-search:before{content:'\e81f'}.elfinder-button-icon-sort:before{content:'\e820'}.elfinder-button-icon-rotate-r:before{content:'\e821'}.elfinder-button-icon-rotate-l:before{content:'\e822'}.elfinder-button-icon-netmount:before{content:'\e823'}.elfinder-button-icon-netunmount:before{content:'\e824'}.elfinder-button-icon-places:before{content:'\e825'}.elfinder-button-icon-chmod:before{content:'\e826'}.elfinder-button-icon-accept:before{content:'\e827'}.elfinder-button-icon-menu:before{content:'\e828'}.elfinder-button-icon-colwidth:before{content:'\e829'}.elfinder-button-icon-fullscreen:before{content:'\e82a'}.elfinder-button-icon-unfullscreen:before{content:'\e82b'}.elfinder-button-icon-empty:before{content:'\e82c'}.elfinder-button-icon-undo:before{content:'\e82d'}.elfinder-button-icon-redo:before{content:'\e82e'}.elfinder-button-icon-preference:before{content:'\e82f'}.elfinder-button-icon-mkdirin:before{content:'\e830'}.elfinder-button-icon-selectall:before{content:'\e831'}.elfinder-button-icon-selectnone:before{content:'\e832'}.elfinder-button-icon-selectinvert:before{content:'\e833'}.elfinder-button-icon-logout:before{content:'\e85a'}.elfinder-button-icon-opennew:before{content:'\e85b'}.elfinder-button-icon-hide:before{content:'\e85d'}.elfinder-button-search .ui-icon.ui-icon-search{font-size:17px}.elfinder-button-search .ui-icon:hover{opacity:1}.elfinder-navbar-icon{font:normal normal normal 16px/1 material;background-image:inherit!important}.elfinder-navbar-icon:before{content:'\e804'}.elfinder-droppable-active .elfinder-navbar-icon:before,.elfinder .ui-state-active .elfinder-navbar-icon:before,.elfinder .ui-state-hover .elfinder-navbar-icon:before{content:'\e805'}.elfinder-navbar-root-local .elfinder-navbar-icon:before{content:'\e83d'!important}.elfinder-navbar-root-ftp .elfinder-navbar-icon:before{content:'\e823'!important}.elfinder-navbar-root-sql .elfinder-navbar-icon:before{content:'\e83e'!important}.elfinder-navbar-root-dropbox .elfinder-navbar-icon:before{content:'\e83f'!important}.elfinder-navbar-root-googledrive .elfinder-navbar-icon:before{content:'\e840'!important}.elfinder-navbar-root-onedrive .elfinder-navbar-icon:before{content:'\e841'!important}.elfinder-navbar-root-box .elfinder-navbar-icon:before{content:'\e842'!important}.elfinder-navbar-root-trash .elfinder-navbar-icon:before{content:'\e80b'!important}.elfinder-navbar-root-zip .elfinder-navbar-icon:before{content:'\e85c'!important}.elfinder-navbar-root-network .elfinder-navbar-icon:before{content:'\e823'!important}.elfinder-places .elfinder-navbar-root .elfinder-navbar-icon:before{content:'\e825'!important}.elfinder-navbar-arrow{background-image:inherit!important;font:normal normal normal 14px/1 material;font-size:10px;padding-top:3px;padding-left:2px;color:#a9a9a9}.elfinder .ui-state-active .elfinder-navbar-arrow{color:#fff}.elfinder-ltr .elfinder-navbar-collapsed .elfinder-navbar-arrow:before{content:'\e857'}.elfinder-rtl .elfinder-navbar-collapsed .elfinder-navbar-arrow:before{content:'\e858'}.elfinder-ltr .elfinder-navbar-expanded .elfinder-navbar-arrow:before,.elfinder-rtl .elfinder-navbar-expanded .elfinder-navbar-arrow:before{content:'\e851'}div.elfinder-cwd-wrapper-list tr.ui-state-default td span.ui-icon{font-size:8px;margin-top:5px;margin-right:5px}div.elfinder-cwd-wrapper-list .ui-icon-grip-dotted-vertical{margin:2px}.elfinder-cwd-view-list .elfinder-navbar-root-box td .elfinder-cwd-icon,.elfinder-cwd-view-list .elfinder-navbar-root-dropbox td .elfinder-cwd-icon,.elfinder-cwd-view-list .elfinder-navbar-root-ftp td .elfinder-cwd-icon,.elfinder-cwd-view-list .elfinder-navbar-root-googledrive td .elfinder-cwd-icon,.elfinder-cwd-view-list .elfinder-navbar-root-local td .elfinder-cwd-icon,.elfinder-cwd-view-list .elfinder-navbar-root-network td .elfinder-cwd-icon,.elfinder-cwd-view-list .elfinder-navbar-root-onedrive td .elfinder-cwd-icon,.elfinder-cwd-view-list .elfinder-navbar-root-sql td .elfinder-cwd-icon,.elfinder-cwd-view-list .elfinder-navbar-root-trash td .elfinder-cwd-icon,.elfinder-cwd-view-list .elfinder-navbar-root-zip td .elfinder-cwd-icon,.elfinder-navbar-root-box .elfinder-cwd-icon,.elfinder-navbar-root-dropbox .elfinder-cwd-icon,.elfinder-navbar-root-ftp .elfinder-cwd-icon,.elfinder-navbar-root-googledrive .elfinder-cwd-icon,.elfinder-navbar-root-local .elfinder-cwd-icon,.elfinder-navbar-root-network .elfinder-cwd-icon,.elfinder-navbar-root-onedrive .elfinder-cwd-icon,.elfinder-navbar-root-sql .elfinder-cwd-icon,.elfinder-navbar-root-trash .elfinder-cwd-icon,.elfinder-navbar-root-zip .elfinder-cwd-icon{background-image:inherit}.elfinder-cwd-view-list .elfinder-navbar-root-box td .elfinder-cwd-icon:before,.elfinder-cwd-view-list .elfinder-navbar-root-dropbox td .elfinder-cwd-icon:before,.elfinder-cwd-view-list .elfinder-navbar-root-ftp td .elfinder-cwd-icon:before,.elfinder-cwd-view-list .elfinder-navbar-root-googledrive td .elfinder-cwd-icon:before,.elfinder-cwd-view-list .elfinder-navbar-root-local td .elfinder-cwd-icon:before,.elfinder-cwd-view-list .elfinder-navbar-root-network td .elfinder-cwd-icon:before,.elfinder-cwd-view-list .elfinder-navbar-root-onedrive td .elfinder-cwd-icon:before,.elfinder-cwd-view-list .elfinder-navbar-root-sql td .elfinder-cwd-icon:before,.elfinder-cwd-view-list .elfinder-navbar-root-trash td .elfinder-cwd-icon:before,.elfinder-cwd-view-list .elfinder-navbar-root-zip td .elfinder-cwd-icon:before,.elfinder-navbar-root-box .elfinder-cwd-icon:before,.elfinder-navbar-root-dropbox .elfinder-cwd-icon:before,.elfinder-navbar-root-ftp .elfinder-cwd-icon:before,.elfinder-navbar-root-googledrive .elfinder-cwd-icon:before,.elfinder-navbar-root-local .elfinder-cwd-icon:before,.elfinder-navbar-root-network .elfinder-cwd-icon:before,.elfinder-navbar-root-onedrive .elfinder-cwd-icon:before,.elfinder-navbar-root-sql .elfinder-cwd-icon:before,.elfinder-navbar-root-trash .elfinder-cwd-icon:before,.elfinder-navbar-root-zip .elfinder-cwd-icon:before{font-family:material;background-color:transparent;color:#525252;font-size:55px;position:relative;top:-10px!important;padding:0;display:contents!important}.elfinder-cwd-view-list .elfinder-navbar-root-local td .elfinder-cwd-icon:before,.elfinder-navbar-root-local .elfinder-cwd-icon:before{content:'\e83d'}.elfinder-cwd-view-list .elfinder-navbar-root-ftp td .elfinder-cwd-icon:before,.elfinder-navbar-root-ftp .elfinder-cwd-icon:before{content:'\e823'}.elfinder-cwd-view-list .elfinder-navbar-root-sql td .elfinder-cwd-icon:before,.elfinder-navbar-root-sql .elfinder-cwd-icon:before{content:'\e83e'}.elfinder-cwd-view-list .elfinder-navbar-roor-dropbox td .elfinder-cwd-icon:before,.elfinder-navbar-roor-dropbox .elfinder-cwd-icon:before{content:'\e83f'}.elfinder-cwd-view-list .elfinder-navbar-roor-googledrive td .elfinder-cwd-icon:before,.elfinder-navbar-roor-googledrive .elfinder-cwd-icon:before{content:'\e840'}.elfinder-cwd-view-list .elfinder-navbar-roor-onedrive td .elfinder-cwd-icon:before,.elfinder-navbar-roor-onedrive .elfinder-cwd-icon:before{content:'\e841'}.elfinder-cwd-view-list .elfinder-navbar-roor-box td .elfinder-cwd-icon:before,.elfinder-navbar-roor-box .elfinder-cwd-icon:before{content:'\e842'}.elfinder-cwd-view-list .elfinder-navbar-root-trash td .elfinder-cwd-icon:before,.elfinder-navbar-root-trash .elfinder-cwd-icon:before{content:'\e80b'}.elfinder-cwd-view-list .elfinder-navbar-root-zip td .elfinder-cwd-icon:before,.elfinder-navbar-root-zip .elfinder-cwd-icon:before{content:'\e85c'}.elfinder-cwd-view-list .elfinder-navbar-root-network td .elfinder-cwd-icon:before,.elfinder-navbar-root-network .elfinder-cwd-icon:before{content:'\e823'}.elfinder-dialog-icon{font:normal normal normal 14px/1 material;background:inherit;color:#524949;font-size:37px}.elfinder-dialog-icon:before{content:'\e843'}.elfinder-dialog-icon-mkdir:before{content:'\e808'}.elfinder-dialog-icon-mkfile:before{content:'\e809'}.elfinder-dialog-icon-copy:before{content:'\e80d'}.elfinder-dialog-icon-move:before,.elfinder-dialog-icon-prepare:before{content:'\e844'}.elfinder-dialog-icon-chunkmerge:before,.elfinder-dialog-icon-upload:before{content:'\e815'}.elfinder-dialog-icon-rm:before{content:'\e80a'}.elfinder-dialog-icon-file:before,.elfinder-dialog-icon-open:before,.elfinder-dialog-icon-readdir:before{content:'\e807'}.elfinder-dialog-icon-reload:before{content:'\e806'}.elfinder-dialog-icon-download:before{content:'\e816'}.elfinder-dialog-icon-save:before{content:'\e845'}.elfinder-dialog-icon-rename:before{content:'\e812'}.elfinder-dialog-icon-archive:before,.elfinder-dialog-icon-zipdl:before{content:'\e819'}.elfinder-dialog-icon-extract:before{content:'\e818'}.elfinder-dialog-icon-search:before{content:'\e81f'}.elfinder-dialog-icon-loadimg:before{content:'\e846'}.elfinder-dialog-icon-url:before{content:'\e81e'}.elfinder-dialog-icon-resize:before{content:'\e81d'}.elfinder-dialog-icon-netmount:before{content:'\e823'}.elfinder-dialog-icon-netunmount:before{content:'\e824'}.elfinder-dialog-icon-chmod:before{content:'\e826'}.elfinder-dialog-icon-dim:before,.elfinder-dialog-icon-preupload:before{content:'\e847'}.elfinder-contextmenu .elfinder-contextmenu-item span.elfinder-contextmenu-icon{font-size:16px}.elfinder-contextmenu .elfinder-contextmenu-item .elfinder-contextsubmenu-item .ui-icon{font-size:15px}.elfinder-contextmenu .elfinder-contextmenu-item .elfinder-button-icon-link:before{content:'\e837'}.elfinder .elfinder-contextmenu-extra-icon{margin-top:-6px}.elfinder .elfinder-contextmenu-extra-icon a{padding:5px;margin:-16px}.elfinder-button-icon-link:before{content:'\e81e'!important}.elfinder .elfinder-contextmenu-arrow{font:normal normal normal 14px/1 material;background-image:inherit;font-size:10px!important;padding-top:3px}.elfinder .elfinder-contextmenu-arrow:before{content:'\e857'}.elfinder-contextmenu .ui-state-hover .elfinder-contextmenu-arrow{background-image:inherit}.elfinder-quicklook .ui-resizable-se{background:inherit}.elfinder-quicklook-navbar-icon{background:transparent;font:normal normal normal 14px/1 material;font-size:32px;color:#fff}.elfinder-quicklook-titlebar-icon{margin-top:-8px}.elfinder-quicklook-titlebar-icon .ui-icon{border:0;opacity:0.8;font-size:15px;padding:1px}.elfinder-quicklook-titlebar .ui-icon-circle-close,.elfinder-quicklook .ui-icon-gripsmall-diagonal-se{color:#f1f1f1}.elfinder-quicklook-navbar-icon-prev:before{content:'\e848'}.elfinder-quicklook-navbar-icon-next:before{content:'\e849'}.elfinder-quicklook-navbar-icon-fullscreen:before{content:'\e84a'}.elfinder-quicklook-navbar-icon-fullscreen-off:before{content:'\e84b'}.elfinder-quicklook-navbar-icon-close:before{content:'\e84c'}.elfinder .ui-button-icon{background-image:inherit}.elfinder .ui-icon-search:before{content:'\e81f'}.elfinder .ui-icon-close:before,.elfinder .ui-icon-closethick:before{content:'\e839'}.elfinder .ui-icon-circle-close:before{content:'\e84c'}.elfinder .ui-icon-gear:before{content:'\e82f'}.elfinder .ui-icon-gripsmall-diagonal-se:before{content:'\e838'}.elfinder .ui-icon-locked:before{content:'\e834'}.elfinder .ui-icon-unlocked:before{content:'\e836'}.elfinder .ui-icon-arrowrefresh-1-n:before{content:'\e821'}.elfinder .ui-icon-plusthick:before{content:'\e83a'}.elfinder .ui-icon-arrowreturnthick-1-s:before{content:'\e83b'}.elfinder .ui-icon-minusthick:before{content:'\e83c'}.elfinder .ui-icon-pin-s:before{content:'\e84d'}.elfinder .ui-icon-check:before{content:'\e84e'}.elfinder .ui-icon-arrowthick-1-s:before{content:'\e84f'}.elfinder .ui-icon-arrowthick-1-n:before{content:'\e850'}.elfinder .ui-icon-triangle-1-s:before{content:'\e851'}.elfinder .ui-icon-triangle-1-n:before{content:'\e852'}.elfinder .ui-icon-grip-dotted-vertical:before{content:'\e853'}.elfinder-lock,.elfinder-perms,.elfinder-symlink{background-image:inherit;font:normal normal normal 18px/1 material;color:#d8d8d8}.elfinder-na .elfinder-perms:before{content:'\e824'}.elfinder-ro .elfinder-perms:before{content:'\e835'}.elfinder-wo .elfinder-perms:before{content:'\e854'}.elfinder-group .elfinder-perms:before{content:'\e800'}.elfinder-lock:before{content:'\e84d'}.elfinder-symlink:before{content:'\e837'}.elfinder .elfinder-toast>div{font:normal normal normal 14px/1 material}.elfinder .elfinder-toast>div:before{font-size:45px;position:absolute;left:5px;top:15px}.elfinder .elfinder-toast>.toast-error,.elfinder .elfinder-toast>.toast-info,.elfinder .elfinder-toast>.toast-success,.elfinder .elfinder-toast>.toast-warning{background-image:inherit!important}.elfinder .elfinder-toast>.toast-info:before{content:'\e817';color:#3498db}.elfinder .elfinder-toast>.toast-error:before{content:'\e855';color:#f44336}.elfinder .elfinder-toast>.toast-success:before{content:'\e84e';color:#4caf50}.elfinder .elfinder-toast>.toast-warning:before{content:'\e856';color:#ff9800}.elfinder-drag-helper-icon-status{font:normal normal normal 14px/1 material;background:inherit}.elfinder-drag-helper-icon-status:before{content:'\e824'}.elfinder-drag-helper-move .elfinder-drag-helper-icon-status{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.elfinder-drag-helper-move .elfinder-drag-helper-icon-status:before{content:'\e854'}.elfinder-drag-helper-plus .elfinder-drag-helper-icon-status{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.elfinder-drag-helper-plus .elfinder-drag-helper-icon-status:before{content:'\e84c'}.elfinder-cwd-view-list td .elfinder-cwd-icon{background-image:url("../images/icons-small.svg")}.elfinder-cwd-icon{background:url("../images/icons-big.svg") 0 0 no-repeat;-webkit-border-radius:0;border-radius:0}.elfinder-cwd-icon:before{font-size:10px;position:relative;top:27px;left:inherit;padding:1px;background-color:transparent}.elfinder-cwd-icon-directory{background-position:0 -50px}.elfinder-cwd .elfinder-droppable-active .elfinder-cwd-icon{background-position:0 -100px}.elfinder-cwd-icon-group{background-position:0 -150px}.elfinder-cwd-icon-application{background-position:0 -200px}.elfinder-cwd-icon-rtf,.elfinder-cwd-icon-rtfd,.elfinder-cwd-icon-text{background-position:0 -250px}.elfinder-cwd-icon-image{background-position:0 -300px}.elfinder-cwd-icon-audio{background-position:0 -350px}.elfinder-cwd-icon-dash-xml,.elfinder-cwd-icon-flash-video,.elfinder-cwd-icon-video,.elfinder-cwd-icon-vnd-apple-mpegurl,.elfinder-cwd-icon-x-mpegurl{background-position:0 -400px}.elfinder-cwd-icon-plain,.elfinder-cwd-icon-x-empty{background-position:0 -450px}.elfinder-cwd-icon-pdf{background-position:0 -500px}.elfinder-cwd-icon-vnd-ms-office{background-position:0 -550px}.elfinder-cwd-icon-x-msaccess{background-position:0 -600px}.elfinder-cwd-icon-x-msaccess:before{content:none!important}.elfinder-cwd-icon-ms-excel,.elfinder-cwd-icon-vnd-ms-excel,.elfinder-cwd-icon-vnd-ms-excel-addin-macroEnabled-12,.elfinder-cwd-icon-vnd-ms-excel-sheet-binary-macroEnabled-12,.elfinder-cwd-icon-vnd-ms-excel-sheet-macroEnabled-12,.elfinder-cwd-icon-vnd-ms-excel-template-macroEnabled-12{background-position:0 -650px}.elfinder-cwd-icon-ms-excel:before,.elfinder-cwd-icon-vnd-ms-excel-addin-macroEnabled-12:before,.elfinder-cwd-icon-vnd-ms-excel-sheet-binary-macroEnabled-12:before,.elfinder-cwd-icon-vnd-ms-excel-sheet-macroEnabled-12:before,.elfinder-cwd-icon-vnd-ms-excel-template-macroEnabled-12:before,.elfinder-cwd-icon-vnd-ms-excel:before{content:none!important}.elfinder-cwd-icon-vnd-ms-powerpoint,.elfinder-cwd-icon-vnd-ms-powerpoint-addin-macroEnabled-12,.elfinder-cwd-icon-vnd-ms-powerpoint-presentation-macroEnabled-12,.elfinder-cwd-icon-vnd-ms-powerpoint-slide-macroEnabled-12,.elfinder-cwd-icon-vnd-ms-powerpoint-slideshow-macroEnabled-12,.elfinder-cwd-icon-vnd-ms-powerpoint-template-macroEnabled-12{background-position:0 -700px}.elfinder-cwd-icon-vnd-ms-powerpoint-addin-macroEnabled-12:before,.elfinder-cwd-icon-vnd-ms-powerpoint-presentation-macroEnabled-12:before,.elfinder-cwd-icon-vnd-ms-powerpoint-slide-macroEnabled-12:before,.elfinder-cwd-icon-vnd-ms-powerpoint-slideshow-macroEnabled-12:before,.elfinder-cwd-icon-vnd-ms-powerpoint-template-macroEnabled-12:before,.elfinder-cwd-icon-vnd-ms-powerpoint:before{content:none!important}.elfinder-cwd-icon-msword,.elfinder-cwd-icon-vnd-ms-word,.elfinder-cwd-icon-vnd-ms-word-document-macroEnabled-12,.elfinder-cwd-icon-vnd-ms-word-template-macroEnabled-12{background-position:0 -750px}.elfinder-cwd-icon-msword:before,.elfinder-cwd-icon-vnd-ms-word-document-macroEnabled-12:before,.elfinder-cwd-icon-vnd-ms-word-template-macroEnabled-12:before,.elfinder-cwd-icon-vnd-ms-word:before{content:none!important}.elfinder-cwd-icon-vnd-oasis-opendocument-base,.elfinder-cwd-icon-vnd-oasis-opendocument-chart,.elfinder-cwd-icon-vnd-oasis-opendocument-database,.elfinder-cwd-icon-vnd-oasis-opendocument-formula,.elfinder-cwd-icon-vnd-oasis-opendocument-graphics,.elfinder-cwd-icon-vnd-oasis-opendocument-graphics-template,.elfinder-cwd-icon-vnd-oasis-opendocument-image,.elfinder-cwd-icon-vnd-openofficeorg-extension{background-position:0 -800px}.elfinder-cwd-icon-vnd-oasis-opendocument-spreadsheet,.elfinder-cwd-icon-vnd-oasis-opendocument-spreadsheet-template,.elfinder-cwd-icon-vnd-openxmlformats-officedocument-spreadsheetml-sheet,.elfinder-cwd-icon-vnd-openxmlformats-officedocument-spreadsheetml-template{background-position:0 -850px}.elfinder-cwd-icon-vnd-oasis-opendocument-presentation,.elfinder-cwd-icon-vnd-oasis-opendocument-presentation-template,.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-presentation,.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-slide,.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-slideshow,.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-template{background-position:0 -900px}.elfinder-cwd-icon-vnd-oasis-opendocument-text,.elfinder-cwd-icon-vnd-oasis-opendocument-text-master,.elfinder-cwd-icon-vnd-oasis-opendocument-text-template,.elfinder-cwd-icon-vnd-oasis-opendocument-text-web,.elfinder-cwd-icon-vnd-openxmlformats-officedocument-wordprocessingml-document,.elfinder-cwd-icon-vnd-openxmlformats-officedocument-wordprocessingml-template{background-position:0 -950px}.elfinder-cwd-icon-x-7z-compressed,.elfinder-cwd-icon-x-bzip,.elfinder-cwd-icon-x-bzip2,.elfinder-cwd-icon-x-gzip,.elfinder-cwd-icon-x-rar,.elfinder-cwd-icon-x-rar-compressed,.elfinder-cwd-icon-x-tar,.elfinder-cwd-icon-x-xz,.elfinder-cwd-icon-x-zip,.elfinder-cwd-icon-zip{background-position:0 -1000px}.elfinder-cwd-icon-postscript{background-position:0 -1050px}.elfinder-cwd-icon-vnd-adobe-photoshop{background-position:0 -1100px}.elfinder-cwd-icon-vnd-adobe-photoshop:before{content:none!important}.elfinder-cwd-icon-x-shockwave-flash{background-position:0 -1150px}.elfinder-cwd-icon-vnd-android-package-archive{background-position:0 -1200px}.elfinder-cwd-icon-vnd-android-package-archive:before{content:none!important}.elfinder-cwd-icon-x-c,.elfinder-cwd-icon-x-c--,.elfinder-cwd-icon-x-c--hdr,.elfinder-cwd-icon-x-c--src,.elfinder-cwd-icon-x-chdr,.elfinder-cwd-icon-x-csrc{background-position:0 -1250px}.elfinder-cwd-icon-css{background-position:0 -1300px}.elfinder-cwd-icon-html{background-position:0 -1350px}.elfinder-cwd-icon-x-jar,.elfinder-cwd-icon-x-java,.elfinder-cwd-icon-x-java-source{background-position:0 -1400px}.elfinder-cwd-icon-x-jar:before,.elfinder-cwd-icon-x-java-source:before,.elfinder-cwd-icon-x-java:before{content:none!important}.elfinder-cwd-icon-javascript,.elfinder-cwd-icon-x-javascript{background-position:0 -1450px}.elfinder-cwd-icon-json{background-position:0 -1500px}.elfinder-cwd-icon-json:before{content:none!important}.elfinder-cwd-icon-markdown,.elfinder-cwd-icon-x-markdown{background-position:0 -1550px}.elfinder-cwd-icon-markdown:before,.elfinder-cwd-icon-x-markdown:before{content:none!important}.elfinder-cwd-icon-x-perl{background-position:0 -1600px}.elfinder-cwd-icon-x-php{background-position:0 -1650px}.elfinder-cwd-icon-x-python,.elfinder-cwd-icon-x-python:after{background-position:0 -1700px}.elfinder-cwd-icon-x-ruby{background-position:0 -1750px}.elfinder-cwd-icon-x-sh,.elfinder-cwd-icon-x-shellscript{background-position:0 -1800px}.elfinder-cwd-icon-sql,.elfinder-cwd-icon-x-sql,.elfinder-cwd-icon-x-sqlite3{background-position:0 -1850px}.elfinder-cwd-icon-svg,.elfinder-cwd-icon-svg-xml,.elfinder-cwd-icon-x-eps{background-position:0 -1900px}.elfinder-cwd-icon-xml,.elfinder-cwd-icon-xml:after{background-position:0 -1950px}.elfinder-cwd-icon-x-zip:before,.elfinder-cwd-icon-zip:before{content:'zip'!important}.elfinder-cwd-icon-x-xz:before{content:'xz'!important}.elfinder-cwd-icon-x-7z-compressed:before{content:'7z'!important}.elfinder-cwd-icon-x-gzip:before{content:'gzip'!important}.elfinder-cwd-icon-x-tar:before{content:'tar'!important}.elfinder-cwd-icon-x-bzip2:before,.elfinder-cwd-icon-x-bzip:before{content:'bzip'!important}.elfinder-cwd-icon-x-rar-compressed:before,.elfinder-cwd-icon-x-rar:before{content:'rar'!important}.elfinder-toolbar{background:#061325;-webkit-border-radius:0;border-radius:0;border:0;padding:5px 0}.elfinder-toolbar .elfinder-button-icon{font-size:20px;color:#ddd;margin-top:-2px}.elfinder-buttonset{-webkit-border-radius:0;border-radius:0;border:0;margin:0 5px;height:24px}.elfinder .elfinder-button{background:transparent;-webkit-border-radius:0;border-radius:0;cursor:pointer;color:#efefef}.elfinder-toolbar-button-separator{border:0}.elfinder-button-menu{-webkit-border-radius:2px;border-radius:2px;-webkit-box-shadow:0 1px 6px rgba(0, 0, 0, 0.3);box-shadow:0 1px 6px rgba(0, 0, 0, 0.3);border:none;margin-top:5px}.elfinder-button-menu-item{color:#666;padding:6px 19px}.elfinder-button-menu-item.ui-state-hover{color:#141414;background-color:#f5f4f4}.elfinder-button-menu-item-separated{border-top:1px solid #e5e5e5}.elfinder-button-menu-item-separated.ui-state-hover{border-top:1px solid #e5e5e5}.elfinder .elfinder-button-search{margin:0 10px;min-height:inherit;overflow:hidden}.elfinder .elfinder-button-search .ui-icon{color:#fff!important}.elfinder .elfinder-button-search input{background:rgba(22, 43, 76, 0.75);-webkit-border-radius:2px;border-radius:2px;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;border:0;margin:0;padding:0 23px;height:24px!important;color:#fff}.elfinder .elfinder-button-search .elfinder-button-menu{margin-top:4px;border:none;-webkit-box-shadow:0 1px 3px rgba(0, 0, 0, 0.5);box-shadow:0 1px 3px rgba(0, 0, 0, 0.5)}.elfinder .elfinder-button-search-menu{-webkit-border-radius:0;border-radius:0;top:30px!important}.elfinder .elfinder-button-search-menu .ui-button{padding:0.4em 1em!important}.elfinder .elfinder-navbar{background:#2a384d;-webkit-box-shadow:0 1px 8px rgba(0, 0, 0, 0.6);box-shadow:0 1px 8px rgba(0, 0, 0, 0.6);border:none}.elfinder .elfinder-navbar .elfinder-lock,.elfinder .elfinder-navbar .elfinder-perms,.elfinder .elfinder-navbar .elfinder-symlink{color:#000;opacity:0.8}.elfinder-navbar-dir{color:#e6e6e6;cursor:pointer;-webkit-border-radius:2px;border-radius:2px;padding:5px;border:none}.elfinder-navbar-dir .elfinder-navbar-icon{color:#fff}.elfinder-navbar-dir.ui-state-active.ui-state-hover,.elfinder-navbar-dir.ui-state-hover{background:#17202c;color:#e6e6e6;border:none}.elfinder-navbar-dir.ui-state-active.ui-state-hover .elfinder-navbar-icon,.elfinder-navbar-dir.ui-state-hover .elfinder-navbar-icon{color:#fff}.elfinder-disabled .elfinder-navbar .ui-state-active,.elfinder-navbar .ui-state-active{background:#1b2533;color:#e8e8e8!important;border:none}.elfinder-disabled .elfinder-navbar .ui-state-active.elfinder-navbar-dir .elfinder-navbar-icon,.elfinder-navbar .ui-state-active.elfinder-navbar-dir .elfinder-navbar-icon{color:#e8e8e8!important}.elfinder-workzone{background:#0e1827}.elfinder-cwd-file{color:#ddd}.elfinder-cwd-file.ui-selected.ui-state-hover,.elfinder-cwd-file.ui-state-hover{background:#1a283c;color:#ddd}.elfinder-cwd-file.ui-selected{background:#152131;color:#ddd}.elfinder-cwd-filename input,.elfinder-cwd-filename textarea{padding:2px;-webkit-border-radius:2px!important;border-radius:2px!important;background:#fff;color:#222}.elfinder-cwd-filename input:focus,.elfinder-cwd-filename textarea:focus{outline:none;border:1px solid #555}.elfinder-cwd-view-icons .elfinder-cwd-file .elfinder-cwd-filename.ui-state-hover,.elfinder-cwd-view-icons .elfinder-cwd-file .ui-state-active,.elfinder-cwd-view-icons .elfinder-cwd-file .ui-state-hover,.elfinder-disabled .elfinder-cwd-view-icons .elfinder-cwd-file .elfinder-cwd-filename.ui-state-hover,.elfinder-disabled .elfinder-cwd table td.ui-state-hover{background:transparent;color:#ddd}.elfinder-cwd table{padding:0}.elfinder-cwd table thead td{padding:5px 14px}.elfinder-cwd table tr{border:0!important}.elfinder-cwd table tr:nth-child(odd){background-color:transparent}.elfinder-cwd table tr:nth-child(odd).ui-state-hover{background-color:#1a283c}.elfinder-cwd.elfinder-table-header-sticky table{border:0}.elfinder-cwd .elfinder-lock,.elfinder-cwd .elfinder-perms,.elfinder-cwd .elfinder-symlink{color:#d8d8d8}.elfinder-cwd-view-icons .elfinder-lock{top:0}.elfinder-cwd-view-list thead td .ui-resizable-handle{top:3px}.elfinder-cwd-view-list .elfinder-lock,.elfinder-cwd-view-list .elfinder-perms,.elfinder-cwd-view-list .elfinder-symlink{font-size:14px;opacity:0.7}.elfinder-cwd-view-list .elfinder-perms{left:inherit}#elfinder-elfinder-cwd-thead td{background:#010e21;color:#ddd}#elfinder-elfinder-cwd-thead td.ui-state-active,#elfinder-elfinder-cwd-thead td.ui-state-hover{background:#000308}#elfinder-elfinder-cwd-thead td.ui-state-active.ui-state-hover{background:#010812}.elfinder .ui-selectable-helper{border:1px solid #022861;background-color:rgba(3, 62, 150, 0.38)}.elfinder-cwd-wrapper.elfinder-cwd-wrapper-trash{background-color:#e4e4e4}.elfinder-cwd-wrapper.elfinder-cwd-wrapper-trash .elfinder-cwd-file{color:#333}.elfinder-cwd-wrapper.elfinder-cwd-wrapper-trash .elfinder-cwd-file.ui-selected.ui-state-hover,.elfinder-cwd-wrapper.elfinder-cwd-wrapper-trash .elfinder-cwd-file.ui-state-hover{background:#1a283c;color:#ddd}.elfinder-cwd-wrapper.elfinder-cwd-wrapper-trash .elfinder-cwd-file.ui-selected{background:#152131;color:#ddd}.elfinder-info-title .elfinder-cwd-icon:before{top:32px;display:block;margin:0 auto}.elfinder-info-title .elfinder-cwd-icon.elfinder-cwd-bgurl:before{background-color:#313131!important}.elfinder-cwd-view-icons .elfinder-cwd-icon.elfinder-cwd-bgurl:before{left:inherit;background-color:#313131}.elfinder-cwd-icon:before,.elfinder-cwd-size1 .elfinder-cwd-icon.elfinder-cwd-bgurl:before,.elfinder-cwd-size1 .elfinder-cwd-icon:before,.elfinder-cwd-size2 .elfinder-cwd-icon.elfinder-cwd-bgurl:before,.elfinder-cwd-size2 .elfinder-cwd-icon:before,.elfinder-cwd-size3 .elfinder-cwd-icon.elfinder-cwd-bgurl:before,.elfinder-cwd-size3 .elfinder-cwd-icon:before,.elfinder-quicklook .elfinder-cwd-icon:before{top:35px;left:50%!important;position:relative!important;display:block!important;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%);max-width:52px;color:#fff}.elfinder .elfinder-cwd-view-icons .elfinder-cwd-bgurl:after,.elfinder .elfinder-quicklook-info-wrapper .elfinder-cwd-bgurl:after{display:none}.elfinder-cwd-size1 .elfinder-cwd-icon.elfinder-cwd-bgurl:before{top:53px;-webkit-transform:scale(1.32) translateX(-50%);-ms-transform:scale(1.32) translateX(-50%);transform:scale(1.32) translateX(-50%)}.elfinder-cwd-size2 .elfinder-cwd-icon.elfinder-cwd-bgurl:before{top:74px;-webkit-transform:scale(1.53) translateX(-50%);-ms-transform:scale(1.53) translateX(-50%);transform:scale(1.53) translateX(-50%)}.elfinder-cwd-size3 .elfinder-cwd-icon.elfinder-cwd-bgurl:before{top:87px;-webkit-transform:scale(2.22) translateX(-50%);-ms-transform:scale(2.22) translateX(-50%);transform:scale(2.22) translateX(-50%)}.elfinder .elfinder-statusbar{background:#061325;-webkit-border-radius:0;border-radius:0;border:0;color:#cfd2d4}.elfinder-path,.elfinder-stat-size{margin:0 15px}.elfinder input,.elfinder select{padding:4px;color:#666;background:#fff;-webkit-border-radius:3px;border-radius:3px;font-weight:normal;border-color:#888;-webkit-box-shadow:none!important;box-shadow:none!important}.elfinder input.ui-state-hover,.elfinder select.ui-state-hover{background:#fff!important;color:#666!important}.elfinder input[type=checkbox]{position:relative;height:initial}.elfinder input[type=checkbox]:after,.elfinder input[type=checkbox]:focus:after{content:"";display:block;width:12px;height:12px;border:1px solid #707070;background-color:#fff;-webkit-border-radius:2px;border-radius:2px}.elfinder input[type=checkbox]:checked:before{content:"";position:absolute;top:-3px;left:6px;display:table;width:4px;height:12px;border:2px solid #707070;border-top-width:0;border-left-width:0;-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.elfinder .ui-button,.elfinder .ui-button.ui-state-default,.elfinder .ui-button:active{display:inline-block;font-weight:normal;text-align:center;vertical-align:middle;cursor:pointer;white-space:nowrap;-webkit-border-radius:3px;border-radius:3px;text-transform:uppercase;-webkit-box-shadow:1px 1px 4px rgba(0, 0, 0, 0.4)!important;box-shadow:1px 1px 4px rgba(0, 0, 0, 0.4)!important;-webkit-transition:all 0.4s;-o-transition:all 0.4s;transition:all 0.4s;background:#fff;color:#222;border:none;padding:7px 6px}.elfinder .ui-button .ui-icon,.elfinder .ui-button.ui-state-default .ui-icon,.elfinder .ui-button:active .ui-icon{color:#222}.elfinder .ui-button.ui-state-active,.elfinder .ui-button.ui-state-hover,.elfinder .ui-button:active,.elfinder .ui-button:focus,.elfinder .ui-button:hover,.elfinder a.ui-button:active{background:#3498db!important;color:#fff!important;border:none}.elfinder .ui-button.ui-state-active .ui-icon,.elfinder .ui-button.ui-state-hover .ui-icon,.elfinder .ui-button:active .ui-icon,.elfinder .ui-button:focus .ui-icon,.elfinder .ui-button:hover .ui-icon,.elfinder a.ui-button:active .ui-icon{color:#fff}.elfinder .ui-button.ui-state-active:hover{background:#217dbb;color:#fff;border:none}.elfinder .ui-button:focus{outline:none!important}.elfinder .ui-controlgroup-horizontal .ui-button{-webkit-border-radius:0;border-radius:0;border:0}.elfinder .elfinder-resize-preset-container .ui-button,.elfinder input:not([type=checkbox]){height:21px}.elfinder .elfinder-contextmenu,.elfinder .elfinder-contextmenu-sub{-webkit-border-radius:2px;border-radius:2px;-webkit-box-shadow:0 1px 6px rgba(0, 0, 0, 0.3);box-shadow:0 1px 6px rgba(0, 0, 0, 0.3);border:none}.elfinder .elfinder-contextmenu-separator,.elfinder .elfinder-contextmenu-sub-separator{border-top:1px solid #e5e5e5}.elfinder .elfinder-contextmenu-item{color:#666;padding:5px 30px}.elfinder .elfinder-contextmenu-item.ui-state-hover{background-color:#f5f4f4;color:#141414}.elfinder .elfinder-contextmenu-item.ui-state-active{background-color:#2196f3;color:#fff}.elfinder .elfinder-dialog{-webkit-border-radius:0;border-radius:0;border:0;-webkit-box-shadow:0 1px 30px rgba(0, 0, 0, 0.6);box-shadow:0 1px 30px rgba(0, 0, 0, 0.6)}.elfinder .elfinder-dialog .ui-dialog-content[id*=edit-elfinder-elfinder-]{padding:0}.elfinder .elfinder-dialog .ui-tabs{-webkit-border-radius:0;border-radius:0;border:0;padding:0}.elfinder .elfinder-dialog .ui-tabs-nav{-webkit-border-radius:0;border-radius:0;border:0;background:transparent;border-bottom:1px solid #ddd}.elfinder .elfinder-dialog .ui-tabs-nav li{border:0;font-weight:normal;background:transparent;margin:0;padding:0}.elfinder .elfinder-dialog .ui-tabs-nav li a{padding:7px 9px}.elfinder .elfinder-dialog .ui-tabs-nav .ui-state-active a,.elfinder .elfinder-dialog .ui-tabs-nav .ui-tabs-selected a,.elfinder .elfinder-dialog .ui-tabs-nav li:hover a{-webkit-box-shadow:inset 0 -2px 0 #3498db;box-shadow:inset 0 -2px 0 #3498db;color:#3498db}.elfinder .elfinder-dialog .ui-tabs .elfinder-tabstop.ui-state-hover{background:transparent;-webkit-box-shadow:inset 0 -2px 0 #3498db;box-shadow:inset 0 -2px 0 #3498db;color:#3498db}.elfinder .elfinder-dialog label.ui-state-hover{background:transparent}.elfinder .elfinder-dialog .ui-resizable-se{display:none}.std42-dialog .ui-dialog-titlebar{background:#0f1f2f;-webkit-border-radius:0;border-radius:0;border:0}.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-button .ui-icon{border-color:inherit;-webkit-transition:0.2s ease-out;-o-transition:0.2s ease-out;transition:0.2s ease-out;opacity:0.8;color:#fff;width:auto;height:auto;font-size:12px;padding:3px}.std42-dialog,.std42-dialog.elfinder-bg-translucent,.std42-dialog.elfinder-bg-translucent .ui-widget-content,.std42-dialog .ui-dialog-content{background-color:#fff}.std42-dialog .ui-dialog-buttonpane button{margin:-1px 2px 2px;padding:7px 6px}.std42-dialog .ui-dialog-buttonpane button span.ui-icon{padding:0}.std42-dialog .ui-dialog-buttonpane .ui-dialog-buttonset.elfinder-edit-extras select{margin-top:0}.std42-dialog,.std42-dialog .ui-widget-content{background-color:#fff}.elfinder-mobile .std42-dialog .ui-dialog-titlebar .ui-dialog-titlebar-close .ui-icon,.std42-dialog .ui-dialog-titlebar .ui-dialog-titlebar-close:hover .ui-icon{background-color:#f44336}.elfinder-mobile .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-full .ui-icon,.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-full:hover .ui-icon{background-color:#4caf50}.elfinder-mobile .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-minimize .ui-icon,.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-minimize:hover .ui-icon{background-color:#ff9800}.elfinder-dialog-title{color:#f1f1f1}.elfinder .ui-widget-content{font-family:"Noto Sans", sans-serif;color:#546e7a}.elfinder-upload-dialog-wrapper .elfinder-upload-dirselect{width:inherit;height:inherit;padding:7px;margin-left:5px;color:#222;-webkit-box-shadow:1px 1px 4px rgba(0, 0, 0, 0.4);box-shadow:1px 1px 4px rgba(0, 0, 0, 0.4);background:#fff;bottom:4px;-webkit-border-radius:2px;border-radius:2px}.elfinder-upload-dialog-wrapper .elfinder-upload-dirselect.ui-state-hover{background:#3498db!important;color:#fff!important;outline:none}.elfinder-upload-dialog-wrapper .ui-button{padding:0.4em 3px;margin:0 -15px 0 19px}.elfinder-upload-dropbox{border:2px dashed #bbb}.elfinder-upload-dropbox:focus{outline:none}.elfinder-upload-dropbox.ui-state-hover{background:#f1f1f1;border:2px dashed #bbb}.elfinder-dialog-resize .elfinder-resize-control-panel{margin-left:-5px}.elfinder-dialog-resize .elfinder-resize-control-panel .ui-button{height:inherit;margin-bottom:5px}.elfinder-help *{color:#546e7a}.elfinder-help a{color:#3498db}.elfinder-help a:hover{color:#217dbb}.elfinder .ui-slider.ui-slider-horizontal{height:2px;border:0;background-color:#bababa!important}.elfinder .ui-slider .ui-slider-handle{background-image:none;background-color:#5d5858;-webkit-border-radius:50%;border-radius:50%;border:0;margin-top:-3px}.elfinder .ui-slider .ui-slider-handle.ui-state-hover{background:#5d5858!important;-webkit-box-shadow:none!important;box-shadow:none!important;-webkit-border-radius:50%;border-radius:50%;cursor:pointer}.elfinder-quicklook{background:#232323;-webkit-border-radius:2px;border-radius:2px}.elfinder-quicklook-titlebar{background:inherit}.elfinder-quicklook-titlebar-icon .ui-icon{background:transparent;color:#fff}.elfinder-quicklook-fullscreen .elfinder-quicklook-navbar{border:inherit;opacity:inherit;-webkit-border-radius:4px;border-radius:4px;background:rgba(66, 66, 66, 0.73)}.elfinder .elfinder-navdock{border:0}.elfinder-mobile .elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-close,.elfinder-mobile .elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-full,.elfinder-mobile .elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-minimize,.elfinder-mobile .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-full .ui-icon,.elfinder-mobile .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-minimize .ui-icon,.elfinder-mobile .std42-dialog .ui-dialog-titlebar .ui-dialog-titlebar-close .ui-icon,.elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-close:hover,.elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-full:hover,.elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-minimize:hover,.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-full:hover .ui-icon,.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-minimize:hover .ui-icon,.std42-dialog .ui-dialog-titlebar .ui-dialog-titlebar-close:hover .ui-icon{background-image:none}
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg">
<defs>
<font id="material" horiz-adv-x="1000" >
<font-face font-family="material" font-weight="400" font-stretch="normal" units-per-em="1000" ascent="850" descent="-150" />
<missing-glyph horiz-adv-x="1000" />
<glyph glyph-name="home" unicode="&#xe800;" d="M417-4v250h166v-250h209v333h125l-417 375-417-375h125v-333h209z" horiz-adv-x="1000" />

<glyph glyph-name="back" unicode="&#xe801;" d="M813 390h-475l218 218-56 55-312-313 312-312 54 54-219 218h478v80z" horiz-adv-x="1000" />

<glyph glyph-name="forward" unicode="&#xe802;" d="M500 663l-54-55 219-218h-477v-80h475l-219-218 56-54 313 312-313 313z" horiz-adv-x="1000" />

<glyph glyph-name="up" unicode="&#xe803;" d="M540 38h-82v472l-214-216-56 56 312 313 313-313-57-56-216 216v-472z" horiz-adv-x="1000" />

<glyph glyph-name="dir" unicode="&#xe804;" d="M417 683h-250c-46 0-84-37-84-83l0-500c0-46 38-83 84-83h666c46 0 84 37 84 83v417c0 46-38 83-84 83h-333l-83 83z" horiz-adv-x="1000" />

<glyph glyph-name="opendir" unicode="&#xe805;" d="M752 35h-589c-44 0-80 36-80 80v470c0 44 36 80 80 80h235l79-80h273c44 0 79-35 79-79l0 0h-666v-393l85 314h669l-90-333c-8-34-39-59-75-59z" horiz-adv-x="1000" />

<glyph glyph-name="reload" unicode="&#xe806;" d="M354 615l61-75h275c20 0 37-17 37-38v-189h-114l152-190 152 190h-115v189c0 63-52 115-114 115l-334-2 0 0z m-119-38l-152-189h115v-190c0-63 52-115 115-115h333l-61 75h-275c-20 0-37 17-37 38v189h115l-153 192z" horiz-adv-x="1000" />

<glyph glyph-name="open" unicode="&#xe807;" d="M833 100h-666v417h666m0 83h-333l-83 83h-250c-46 0-84-37-84-83v-500c0-46 38-83 84-83h666c46 0 84 37 84 83v417c0 46-38 83-84 83z" horiz-adv-x="1000" />

<glyph glyph-name="mkdir" unicode="&#xe808;" d="M833 600h-333l-83 83h-250c-46 0-84-37-84-83l0-500c0-46 38-83 84-83h666c46 0 84 37 84 83v417c0 46-38 83-84 83z m-41-333h-125v-125h-84v125h-125v83h125v125h84v-125h125v-83z" horiz-adv-x="1000" />

<glyph glyph-name="mkfile" unicode="&#xe809;" d="M542 475h229l-229 229v-229m-292 292h333l250-250v-500c0-46-37-84-83-84h-500c-46 0-83 38-83 84v666c0 46 37 84 83 84m208-542v125h-83v-125h-125v-83h125v-125h83v125h125v83h-125z" horiz-adv-x="1000" />

<glyph glyph-name="rm" unicode="&#xe80a;" d="M223 25c0-52 42-92 92-92h370c53 0 92 42 92 92v556h-554v-556z m602 696h-162l-46 46h-234l-45-46h-163v-92h648l2 92 0 0z" horiz-adv-x="1000" />

<glyph glyph-name="trash" unicode="&#xe80b;" d="M896 767l-133-759c-9-41-44-75-88-75h-350c-44 0-81 32-87 75l-134 759h792m-688-88l117-658h350l117 658h-584m161-571v175h175v-175h-175m175 213l-140 139 140 140 139-140-139-139z" horiz-adv-x="1000" />

<glyph glyph-name="restore" unicode="&#xe80c;" d="M560 706c-197 0-358-160-358-356h-119l159-158 158 158h-119c0 154 125 277 277 277s277-125 277-277-125-277-277-277c-60 0-114 21-160 52l-56-56c60-48 137-73 218-73 198 0 357 160 357 356s-161 354-357 354m80-356c0 44-36 79-80 79s-79-37-79-79 36-79 79-79 80 35 80 79z" horiz-adv-x="1000" />

<glyph glyph-name="copy" unicode="&#xe80d;" d="M671 767h-454c-42 0-75-34-75-75v-532h75v532h454v75z m112-152h-416c-42 0-75-34-75-75v-532c0-41 33-75 75-75h416c42 0 75 34 75 75v532c2 41-33 75-75 75z m0-607h-416v532h416v-532z" horiz-adv-x="1000" />

<glyph glyph-name="cut" unicode="&#xe80e;" d="M402 531c11 21 15 44 15 69 0 92-75 167-167 167s-167-75-167-167 75-167 167-167c25 0 48 7 69 15l98-98-98-98c-21 11-44 15-69 15-92 0-167-75-167-167s75-167 167-167 167 75 167 167c0 25-7 48-15 69l98 98 292-292h125v42l-515 514z m-152-14c-46 0-83 37-83 83s37 83 83 83 83-37 83-83-37-83-83-83z m0-500c-46 0-83 37-83 83s37 83 83 83 83-37 83-83-37-83-83-83z m250 312c-10 0-21 11-21 21s11 21 21 21 21-11 21-21-11-21-21-21z m292 396l-250-250 83-83 292 291v42h-125z" horiz-adv-x="1000" />

<glyph glyph-name="paste" unicode="&#xe80f;" d="M765 692h-159c-14 43-56 75-106 75s-92-32-106-75h-159c-41 0-75-34-75-75v-607c0-41 34-75 75-75h532c41 0 75 34 75 75v605c0 41-36 77-77 77z m-265 0c21 0 38-17 38-38s-17-39-38-39-37 16-37 37 16 40 37 40z m265-684h-530v607h75v-115h380v115h75v-607z" horiz-adv-x="1000" />

<glyph glyph-name="getfile" unicode="&#xe810;" d="M250 767l500-467-242-21 138-304-92-42-133 309-171-163v688" horiz-adv-x="1000" />

<glyph glyph-name="duplicate" unicode="&#xe811;" d="M850 510l-115 115c-2 2-6 4-10 4h-52v6c0 5-2 7-4 11l-115 114c-2 5-6 7-10 7h-356c-23 0-42-19-42-42v-617c0-23 19-41 42-41h139v-92c0-23 19-42 42-42h444c22 0 41 19 41 42v527c0 2-2 6-4 8z m-658-395v606h329v-92c0-8 8-16 17-16h89v-498h-435z m618-136h-437v92h260c23 0 42 19 42 42v472h29v-91c0-9 9-17 17-17h89v-498z m-118 117v-81c0-7 4-11 10-11h31c30 0 52 23 52 52 3 27-22 50-52 50h-31c-6 0-10-4-10-10z m23-13h18c17 0 30-12 30-29 0-14-13-27-30-27h-18v56z" horiz-adv-x="1000" />

<glyph glyph-name="rename" unicode="&#xe812;" d="M500 725v-83h83c23 0 42-19 42-42v-500c0-23-19-42-42-42h-83v-83h83c32 0 61 12 84 33 23-21 52-33 83-33h83v83h-83c-23 0-42 19-42 42v42h167 42v41 334 41h-42-167v42c0 23 19 42 42 42h83v83h-83c-31 0-60-12-83-33-23 21-52 33-84 33h-83z m-417-167v-41-334-41h42 375v83h-333v250h333v83h-375-42z m625-83h125v-250h-125v250z m-458-83v-84h208v84h-208z" horiz-adv-x="1000" />

<glyph glyph-name="edit" unicode="&#xe813;" d="M83 106v-173h173l513 513-173 173-513-513z m819 473c19 19 19 48 0 65l-108 108c-19 19-48 19-65 0l-85-85 173-173c2 0 85 85 85 85z" horiz-adv-x="1000" />

<glyph glyph-name="quicklook" unicode="&#xe814;" d="M500 633c-190 0-352-116-417-283 65-167 227-283 417-283s352 116 417 283c-65 167-227 283-417 283z m0-473c-104 0-190 86-190 190s86 190 190 190 190-86 190-190-86-190-190-190z m0 305c-62 0-115-50-115-115s50-115 115-115 115 50 115 115-52 115-115 115z" horiz-adv-x="1000" />

<glyph glyph-name="upload" unicode="&#xe815;" d="M352 129h294v294h196l-342 344-344-344h196v-294z m-196-98h686v-98h-686v98z" horiz-adv-x="1000" />

<glyph glyph-name="download" unicode="&#xe816;" d="M844 473h-196v294h-296v-294h-196l344-344 344 344z m-688-442v-98h686v98h-686z" horiz-adv-x="1000" />

<glyph glyph-name="info" unicode="&#xe817;" d="M458 142h84v250h-84v-250z m42 625c-231 0-417-186-417-417s186-417 417-417 417 188 417 417-188 417-417 417z m0-750c-183 0-333 150-333 333s150 333 333 333 333-150 333-333-150-333-333-333z m-42 458h84v83h-84v-83z" horiz-adv-x="1000" />

<glyph glyph-name="extract" unicode="&#xe818;" d="M896 665l-65 77c-12 14-31 25-54 25h-554c-21 0-42-11-54-25l-65-77c-12-17-21-38-21-59v-579c0-52 42-94 92-94h648c52 0 92 42 92 92v579c2 23-7 44-19 61z m-396-198l254-254h-162v-92h-186v92h-162l256 254z m-319 208l38 46h556l44-46h-638z" horiz-adv-x="1000" />

<glyph glyph-name="archive" unicode="&#xe819;" d="M896 665l-65 77c-12 14-31 25-54 25h-554c-21 0-42-11-54-25l-65-77c-12-17-21-38-21-59v-579c0-52 42-94 92-94h648c52 0 92 42 92 92v579c2 23-7 44-19 61z m-396-569l-254 254h162v92h186v-92h162l-256-254z m-319 579l38 46h556l44-46h-638z" horiz-adv-x="1000" />

<glyph glyph-name="view" unicode="&#xe81a;" d="M83 481h175v175h-175v-175z m0-218h175v175h-175v-175z m219 0h175v175h-175v-175z m221 0h175v175h-175v-175z m-221 218h175v175h-175v-175z m221 175v-175h175v175h-175z m219-393h175v175h-175v-175z m-659-219h175v175h-175v-175z m219 0h175v175h-175v-175z m221 0h175v175h-175v-175z m219 0h175v175h-175v-175z m0 612v-175h175v175h-175z" horiz-adv-x="1000" />

<glyph glyph-name="view-list" unicode="&#xe81b;" d="M83 252h196v196h-196v-196z m0-246h196v196h-196v-196z m0 492h196v196h-196v-196z m246-246h588v196h-588v-196z m0-246h588v196h-588v-196z m0 688v-196h588v196h-588z" horiz-adv-x="1000" />

<glyph glyph-name="help" unicode="&#xe81c;" d="M458 100h84v83h-84v-83m42 667c-229 0-417-188-417-417s188-417 417-417 417 188 417 417-188 417-417 417m0-750c-183 0-333 150-333 333s150 333 333 333 333-150 333-333-150-333-333-333m0 583c-92 0-167-75-167-167h84c0 46 37 84 83 84s83-38 83-84c0-83-125-73-125-208h84c0 94 125 104 125 208 0 92-75 167-167 167z" horiz-adv-x="1000" />

<glyph glyph-name="resize" unicode="&#xe81d;" d="M167 767c-46 0-84-38-84-84v-41h84v41h41v84h-41z m125 0v-84h83v84h-83z m166 0v-84h84v84h-84z m167 0v-84h83v84h-83z m167 0v-84h41v-41h84v41c0 46-38 84-84 84h-41z m-709-209v-83h84v83h-84z m750 0v-83h84v83h-84z m-500-41v-84h192l-210-208h-232v-83-125c0-46 38-84 84-84h208v84 148l208 210v-192h84v292 42h-42-292z m-250-125v-84h84v84h-84z m750 0v-84h84v84h-84z m0-167v-83h84v83h-84z m0-167v-41h-41v-84h41c46 0 84 38 84 84v41h-84z m-375-41v-84h84v84h-84z m167 0v-84h83v84h-83z" horiz-adv-x="1000" />

<glyph glyph-name="link" unicode="&#xe81e;" d="M163 350c0 71 58 129 129 129h166v79h-166c-115 0-209-93-209-208s94-208 209-208h166v79h-166c-71 0-129 58-129 129z m170-42h334v84h-334v-84z m375 250h-166v-79h166c71 0 130-58 130-129s-59-129-130-129h-166v-79h166c115 0 209 93 209 208s-94 208-209 208z" horiz-adv-x="1000" />

<glyph glyph-name="search" unicode="&#xe81f;" d="M679 242h-37l-13 12c46 54 75 125 75 202-2 171-139 311-310 311s-311-140-311-311 140-310 311-310c77 0 148 27 202 75l12-13v-37l238-238 71 71-238 238z m-285 0c-119 0-215 96-215 214s96 215 215 215 214-96 214-215-98-214-214-214z" horiz-adv-x="1000" />

<glyph glyph-name="sort" unicode="&#xe820;" d="M394 635l133 132 131-132h-264m264-570l-131-132-131 132h262m-277 191h-116l-32-110h-95l125 406h122l128-406h-100l-32 110m-104 67h92l-25 85-11 40-10 40h-2l-8-40-11-40-25-85m273-177v52l194 275v2h-175v77h294v-54l-190-271v-2h192v-77l-315-2 0 0z" horiz-adv-x="1000" />

<glyph glyph-name="rotate-r" unicode="&#xe821;" d="M658 567l-200 200v-136c-173-21-308-168-308-350s133-327 308-348v90c-125 21-220 129-220 260s95 238 220 259v-171l200 196z m192-240c-8 61-31 121-71 171l-62-63c23-33 37-70 46-108h87z m-304-304v-90c60 9 121 32 171 71l-63 63c-33-23-71-38-108-44z m171 106l62-62c40 52 65 110 71 171h-90c-4-38-20-75-43-109z" horiz-adv-x="1000" />

<glyph glyph-name="rotate-l" unicode="&#xe822;" d="M283 435l-62 63c-40-52-65-110-71-171h90c4 38 20 75 43 108z m-45-197h-88c8-61 31-121 71-171l62 62c-23 34-39 71-45 109z m45-234c52-39 111-62 171-71v90c-37 6-75 21-108 46 0-2-63-65-63-65z m259 627v136l-200-200 200-196v173c125-21 221-129 221-261s-96-239-221-260v-90c173 21 308 169 308 350s-133 327-308 348z" horiz-adv-x="1000" />

<glyph glyph-name="netmount" unicode="&#xe823;" d="M708 767c46 0 84-38 84-84v-416c0-46-38-84-84-84h-166v-83h41c23 0 42-19 42-42h292v-83h-292c0-23-19-42-42-42h-166c-23 0-42 19-42 42h-292v83h292c0 23 19 42 42 42h41v83h-166c-46 0-84 38-84 84v416c0 46 38 84 84 84h416z" horiz-adv-x="1000" />

<glyph glyph-name="netunmount" unicode="&#xe824;" d="M917 342c4 229-179 421-409 425-231 4-420-179-425-409-4-229 180-421 409-425s421 180 425 409z m-750 14c4 184 156 332 339 327 77-2 148-29 202-73l-475-458c-43 56-68 127-66 204z m125-266l475 458c43-56 68-129 66-206-4-184-154-332-339-327-77 4-148 31-202 75z" horiz-adv-x="1000" />

<glyph glyph-name="places" unicode="&#xe825;" d="M750 767h-500c-46 0-83-38-83-84v-666c0-46 37-84 83-84h500c46 0 83 38 83 84v666c0 46-37 84-83 84z m-500-84h208v-333l-104 63-104-63v333z" horiz-adv-x="1000" />

<glyph glyph-name="chmod" unicode="&#xe826;" d="M381 302l-298 83 55 167 291-119-19 334h186l-19-334 286 113 54-173-298-83 196-250-148-107-173 273-167-262-148 102 202 256z" horiz-adv-x="1000" />

<glyph glyph-name="accept" unicode="&#xe827;" d="M500 767c-231 0-417-186-417-417 0-229 186-417 417-417 229 0 417 188 417 417 0 231-188 417-417 417z m-83-625l-209 208 59 58 150-150 316 317 59-58-375-375z" horiz-adv-x="1000" />

<glyph glyph-name="menu" unicode="&#xe828;" d="M83 73h834v92h-834v-92z m0 231h834v92h-834v-92z m0 323v-92h834v92h-834z" horiz-adv-x="1000" />

<glyph glyph-name="colwidth" unicode="&#xe829;" d="M377 31h246v638h-246v-638z m-294 0h246v638h-246v-638z m588 638v-638h246v638h-246z" horiz-adv-x="1000" />

<glyph glyph-name="fullscreen" unicode="&#xe82a;" d="M202 231h-119v-298h298v119h-179v179z m-119 238h119v179h179v119h-298v-298z m715-417h-179v-119h298v298h-119v-179z m-179 715v-119h179v-179h119v298h-298z" horiz-adv-x="1000" />

<glyph glyph-name="unfullscreen" unicode="&#xe82b;" d="M83 113h180v-180h118v298h-298v-118z m180 475h-180v-119h298v298h-118c0 0 0-179 0-179z m356-655h119v180h179v118h-298v-298z m119 655v179h-119v-298h298v119c0 0-179 0-179 0z" horiz-adv-x="1000" />

<glyph glyph-name="empty" unicode="&#xe82c;" d="M813 463l-42-75-531 304 43 75 134-77 58 18 190-108 16-60 132-77m-628-442v525h221l302-175v-350c0-48-39-88-87-88h-348c-48 0-88 40-88 88z" horiz-adv-x="1000" />

<glyph glyph-name="undo" unicode="&#xe82d;" d="M375 767l-292-209 292-208v125h188c106 0 187-81 187-187s-81-188-187-188h-480v-167h480c195 0 354 159 354 355s-159 354-354 354h-188v125z" horiz-adv-x="1000" />

<glyph glyph-name="redo" unicode="&#xe82e;" d="M625 767v-125h-187c-196 0-355-159-355-354s159-355 355-355h479v167h-479c-107 0-188 81-188 188s81 187 188 187h187v-125l292 208-292 209z" horiz-adv-x="1000" />

<glyph glyph-name="preference" unicode="&#xe82f;" d="M810 310c3 13 3 28 3 42s-3 27-3 42l88 69c8 6 10 16 4 27l-83 143c-6 9-17 13-25 9l-104-42c-21 17-46 31-71 42l-15 108c-2 8-10 17-21 17h-166c-11 0-19-9-21-17l-17-110c-25-11-48-25-71-42l-104 42c-8 4-21 0-25-9l-83-143c-6-9-2-21 4-28l90-68c0-15-2-27-2-42s2-27 2-42l-88-68c-8-7-10-17-4-27l83-144c7-9 17-13 25-9l104 42c21-17 46-31 71-42l17-110c2-10 10-17 21-17h166c11 0 19 9 21 17l17 110c25 11 48 25 71 42l104-42c10-4 21 0 25 9l83 144c7 8 2 20-4 27l-92 70z m-310-106c-81 0-146 65-146 146s65 146 146 146 146-65 146-146-65-146-146-146z" horiz-adv-x="1000" />

<glyph glyph-name="mkdirin" unicode="&#xe830;" d="M583 100v125h-166v167h166v125l209-209m41 292h-333l-83 83h-250c-46 0-84-37-84-83v-500c0-46 38-83 84-83h666c46 0 84 37 84 83v417c0 46-38 83-84 83z" horiz-adv-x="1000" />

<glyph glyph-name="selectall" unicode="&#xe831;" d="M167 767c-46 0-84-38-84-84v-41h84v41h41v84h-41z m125 0v-84h83v84h-83z m166 0v-84h84v84h-84z m167 0v-84h83v84h-83z m167 0v-84h41v-41h84v41c0 46-38 84-84 84h-41z m-709-209v-83h84v83h-84z m209 0v-83h416v83h-416z m541 0v-83h84v83h-84z m-750-166v-84h84v84h-84z m209 0v-84h416v84h-416z m541 0v-84h84v84h-84z m-750-167v-83h84v83h-84z m209 0v-83h416v83h-416z m541 0v-83h84v83h-84z m-750-167v-41c0-46 38-84 84-84h41v84h-41v41h-84z m750 0v-41h-41v-84h41c46 0 84 38 84 84v41h-84z m-541-41v-84h83v84h-83z m166 0v-84h84v84h-84z m167 0v-84h83v84h-83z" horiz-adv-x="1000" />

<glyph glyph-name="selectnone" unicode="&#xe832;" d="M83 683c0 46 38 84 84 84h125v-84h-125v-125h-84v125m834 0v-125h-84v125h-125v84h125c46 0 84-38 84-84m-84-666v125h84v-125c0-46-38-84-84-84h-125v84h125m-750 0v125h84v-125h125v-84h-125c-46 0-84 38-84 84m334 750h166v-84h-166v84m0-750h166v-84h-166v84m416 416h84v-166h-84v166m-750 0h84v-166h-84v166z" horiz-adv-x="1000" />

<glyph glyph-name="selectinvert" unicode="&#xe833;" d="M175 767h92v-92h91v92h92v-92h92v92h91v-92h92v92h92v-92h100v-92h-92v-91h92v-92h-92v-92h92v-91h-92v-92h92v-92h-92v-100h-92v92h-91v-92h-92v92h-92v-92h-91v92h-92v-92h-100v92h-92v92h92v91h-92v92h92v92h-92v91h92v92h-92v100h92v92z" horiz-adv-x="1000" />

<glyph glyph-name="lock" unicode="&#xe834;" d="M500 131c44 0 79 36 79 79s-35 80-79 80-79-36-79-80 35-79 79-79z m238 359h-40v79c0 108-88 198-198 198s-198-90-198-198v-79h-39c-44 0-80-36-80-80v-395c0-44 36-80 80-80h477c43 0 79 36 79 80v395c-2 44-38 80-81 80z m-361 79c0 69 54 123 123 123s123-54 123-123v-79h-246v79z m361-556h-475v395h477v-395z" horiz-adv-x="1000" />

<glyph glyph-name="perms" unicode="&#xe835;" d="M738 490h-40v79c0 108-88 198-198 198s-198-90-198-198v-79h-39c-44 0-80-36-80-80v-395c0-44 36-80 80-80h477c43 0 79 36 79 80v395c-2 44-38 80-81 80z m-238-359c-44 0-79 36-79 79s35 80 79 80 79-36 79-80-35-79-79-79z m123 359h-246v79c0 69 54 123 123 123s123-54 123-123v-79z" horiz-adv-x="1000" />

<glyph glyph-name="unlocked" unicode="&#xe836;" d="M500 131c44 0 79 36 79 79s-35 80-79 80-79-36-79-80 35-79 79-79z m238 359h-40v79c0 108-88 198-198 198s-198-90-198-198h75c0 69 54 123 123 123s123-54 123-123v-79h-360c-44 0-80-36-80-80v-395c0-44 36-80 80-80h477c43 0 79 36 79 80v395c-2 44-38 80-81 80z m0-477h-475v395h477v-395z" horiz-adv-x="1000" />

<glyph glyph-name="symlink" unicode="&#xe837;" d="M917 373l-325 325v-185c-323-46-463-280-509-511 117 163 277 236 509 236v-190l325 325z" horiz-adv-x="1000" />

<glyph glyph-name="resizable" unicode="&#xe838;" d="M917-67h-167v167h167v-167m0 334h-167v166h167v-166m-334-334h-166v167h166v-167m0 334h-166v166h166v-166m-333-334h-167v167h167v-167m667 667h-167v167h167v-167z" horiz-adv-x="1000" />

<glyph glyph-name="close" unicode="&#xe839;" d="M917 683l-84 84-333-334-333 334-84-84 334-333-334-333 84-84 333 334 333-334 84 84-334 333 334 333z" horiz-adv-x="1000" />

<glyph glyph-name="plus" unicode="&#xe83a;" d="M917 290h-357v-357h-118v357h-359v118h357v359h118v-357h359v-120z" horiz-adv-x="1000" />

<glyph glyph-name="return" unicode="&#xe83b;" d="M513 494c-109 0-207-40-282-106l-146 145v-366h367l-148 150c56 48 129 77 209 77 143 0 266-94 308-225l96 31c-54 171-215 294-404 294z" horiz-adv-x="1000" />

<glyph glyph-name="minus" unicode="&#xe83c;" d="M917 292h-834v118h834v-118z" horiz-adv-x="1000" />

<glyph glyph-name="hdd" unicode="&#xe83d;" d="M167 767l-84-500h834l-84 500h-666z m-84-542v-292h834v292h-834z m84-83h41v-84h42v84h42v-84h41v84h42v-84h42v84h41v-84h42v84h42v-84h41v84h42v-84-41h-42-41-42-42-41-42-42-41-42-42-41v41 84z m604 0c35 0 62-27 62-63s-27-62-62-62-63 27-63 62 27 63 63 63z" horiz-adv-x="1000" />

<glyph glyph-name="sql" unicode="&#xe83e;" d="M500 767c-85 0-162-15-223-40-29-12-56-27-75-48s-35-48-35-79v-333-167c0-31 14-58 35-79s46-38 75-50c61-23 138-38 223-38s163 15 223 40c29 12 56 29 75 50s35 46 35 77v167 333c0 31-14 58-35 79s-46 36-75 48c-60 25-138 40-223 40z m0-84c75 0 144-14 190-33 23-10 39-21 50-29s10-17 10-21 0-10-10-19-27-21-50-29c-46-21-115-35-190-35s-144 14-190 33c-22 10-39 21-50 29s-10 17-10 21 0 10 10 19 28 21 50 29c46 21 115 35 190 35z m-250-195c8-5 17-11 27-15 61-25 138-40 223-40s163 15 223 40c10 4 19 10 27 15v-55c0-4-2-10-10-20s-27-21-50-30c-46-20-113-33-190-33s-144 13-190 33c-22 11-39 21-50 30s-10 16-10 20v55z m0-167c8-4 17-11 27-15 61-25 138-39 223-39s163 14 223 39c10 4 19 11 27 15v-54c0-4-2-11-10-21s-27-21-50-29c-46-21-113-34-190-34s-144 13-190 34c-22 10-39 21-50 29s-10 17-10 21v54z m0-167c8-4 17-10 27-14 61-25 138-40 223-40s163 15 223 40c10 4 19 10 27 14v-54c0-4-2-10-10-21s-27-21-50-29c-46-21-113-33-190-33s-144 12-190 33c-22 10-39 21-50 29s-10 17-10 21v54z" horiz-adv-x="1000" />

<glyph glyph-name="dropbox" unicode="&#xe83f;" d="M665 123l-165 125-160-125-94 56v-60l254-169 256 167v60l-91-54z m252 471l-246 156-171-140 256-150 161 134z m-834-269l252-150 165 127-242 154-175-131z m252 425l-252-162 175-132 242 154-165 140z m165-448l167-127 250 150-161 135-256-158z" horiz-adv-x="1000" />

<glyph glyph-name="googledrive" unicode="&#xe840;" d="M898 254l-267 463h-262l0 0 266-463h263z m-488-39l-131-232h506l132 232h-507l0 0z m-77 443l-250-443 132-232 254 444-136 231z" horiz-adv-x="1000" />

<glyph glyph-name="onedrive" unicode="&#xe841;" d="M544 602c-75 0-142-44-173-106-19 10-42 17-65 17-75 0-133-61-133-134 0-6 2-10 2-16-52-7-92-50-92-105 0-58 46-104 105-104h83c-4 15-8 29-8 44 0 58 37 108 89 127 11 88 88 156 177 156 54 0 104-23 138-64 12 4 27 6 41 6 11 0 19 0 30-2-7 102-90 181-194 181z m-15-148c-81 0-148-66-148-148v-2c-50-6-89-50-89-102 0-58 46-104 104-104h431c50 0 90 40 90 90s-40 89-90 89c0 67-54 119-119 119-18 0-35-4-52-13-27 42-73 71-127 71z" horiz-adv-x="1000" />

<glyph glyph-name="box" unicode="&#xe842;" d="M898 365c-38 93-113 139-213 145-14 3-20 7-25 19-12 36-35 67-66 90-104 79-265 29-306-94-3-8-13-17-21-21-29-14-63-23-88-41-81-59-114-165-83-257 33-98 123-162 227-162h175c60 0 123-2 185 0 67 2 125 25 169 73 65 71 83 156 46 248z m-100-244c-15-11-29-6-40 8-14 19-29 40-45 61-17-21-30-40-44-59-9-12-21-23-38-12s-16 25-8 41c-58-62-117-58-198 11-23-29-50-48-85-54-67-13-138 43-138 110v192c0 21 13 33 27 33 17 0 27-12 27-33v-84c32 19 63 23 94 17 31-8 56-25 75-54 4 2 6 6 8 8 50 59 125 63 182 11l8-9c-10 17-10 32 2 40 17 10 29 2 40-10 14-19 29-38 45-59 13 15 25 29 36 44 4 6 8 12 12 17 13 14 27 16 40 6 15-13 12-25 2-40-15-18-29-39-44-58-8-10-8-17 0-27 17-19 32-40 46-61 11-16 8-31-4-39z m-473 179c-37 0-67-29-67-65 0-37 27-64 65-64s65 27 67 62c0 38-27 67-65 67z m202 0c-37 0-67-29-67-65 0-37 30-64 67-64 38 0 67 27 67 62 0 36-31 67-67 67z m106-4c2-6 5-13 5-19 14-37 10-75-13-108 17 19 31 37 46 58 4 4 2 15-2 19-11 17-23 33-36 50z" horiz-adv-x="1000" />

<glyph glyph-name="help-circle" unicode="&#xe843;" d="M500 767c-231 0-417-186-417-417s186-417 417-417 417 188 417 417-188 417-417 417z m42-709h-84v84h84v-84z m85 323l-37-37c-30-31-48-56-48-119h-84v21c0 46 19 87 48 119l52 52c15 14 25 35 25 58 0 46-37 83-83 83s-83-37-83-83h-84c0 92 75 167 167 167s167-75 167-167c0-37-15-71-40-94z" horiz-adv-x="1000" />

<glyph glyph-name="move" unicode="&#xe844;" d="M425 465h152v114h115l-192 188-190-190h115v-112z m-40-40h-114v115l-188-190 190-190v115h115v150z m532-75l-190 190v-115h-114v-152h114v-115l190 192z m-342-115h-152v-114h-115l192-188 190 190h-115v112z" horiz-adv-x="1000" />

<glyph glyph-name="save" unicode="&#xe845;" d="M731 767h-556c-50 0-92-42-92-92v-648c0-52 42-94 92-94h648c52 0 92 42 92 92v556l-184 186z m-231-742c-77 0-140 63-140 140s63 139 140 139 140-62 140-139-63-140-140-140z m140 465h-465v185h463v-185z" horiz-adv-x="1000" />

<glyph glyph-name="loading" unicode="&#xe846;" d="M500 577v-114l152 152-152 152v-115c-167 0-302-135-302-302 0-60 17-115 48-160l56 56c-17 31-27 67-27 106-2 123 100 225 225 225z m256-67l-56-56c17-31 27-66 27-106 0-125-102-227-227-227v114l-152-152 152-150v115c167 0 302 135 302 302 0 60-17 115-46 160z" horiz-adv-x="1000" />

<glyph glyph-name="info-circle" unicode="&#xe847;" d="M500 767c-231 0-417-186-417-417s186-417 417-417 417 188 417 417-188 417-417 417z m42-625h-84v250h84v-250z m0 333h-84v83h84v-83z" horiz-adv-x="1000" />

<glyph glyph-name="prev" unicode="&#xe848;" d="M758 669l-100 98-416-417 416-417 98 98-316 319 318 319z" horiz-adv-x="1000" />

<glyph glyph-name="next" unicode="&#xe849;" d="M342 767l-98-98 316-319-318-319 98-98 416 417-414 417z" horiz-adv-x="1000" />

<glyph glyph-name="ql-fullscreen" unicode="&#xe84a;" d="M500 767l171-171-417-417-171 171v-417h417l-171 171 417 417 171-171v417h-417z" horiz-adv-x="1000" />

<glyph glyph-name="ql-fullscreen-off" unicode="&#xe84b;" d="M858 767l-177-177-118 118-59-354 354 59-118 118 177 177-59 59z m-362-421l-354-58 118-119-177-177 59-59 177 177 119-118 58 354z" horiz-adv-x="1000" />

<glyph glyph-name="close-circle" unicode="&#xe84c;" d="M500 767c231 0 417-186 417-417s-186-417-417-417-417 186-417 417 186 417 417 417m150-209l-150-150-150 150-58-58 150-150-150-150 58-58 150 150 150-150 58 58-150 150 150 150-58 58z" horiz-adv-x="1000" />

<glyph glyph-name="pin" unicode="&#xe84d;" d="M667 350v333h41v84h-416v-84h41v-333l-83-83v-84h217v-250h66v250h217v84l-83 83z" horiz-adv-x="1000" />

<glyph glyph-name="check" unicode="&#xe84e;" d="M348 167l-198 198-67-69 265-265 569 569-67 67-502-500z" horiz-adv-x="1000" />

<glyph glyph-name="arrowthick-1-s" unicode="&#xe84f;" d="M498-67l290 290-75 73-163-163-2 634h-104l2-634-163 159-73-75 288-284z" horiz-adv-x="1000" />

<glyph glyph-name="arrowthick-1-n" unicode="&#xe850;" d="M502 767l-289-290 72-73 165 163v-634h104v634l163-163 73 75-288 288z" horiz-adv-x="1000" />

<glyph glyph-name="caret-down" unicode="&#xe851;" d="M902 569c-10 10-23 14-37 14h-730c-14 0-27-4-37-14s-15-23-15-38c0-14 5-27 15-37l365-365c10-10 22-14 37-14s27 4 38 14l364 367c11 10 15 23 15 37 0 13-4 25-15 36z" horiz-adv-x="1000" />

<glyph glyph-name="caret-up" unicode="&#xe852;" d="M917 165c0 14-4 27-15 37l-364 367c-11 10-23 14-38 14s-27-4-37-14l-365-365c-10-10-15-21-15-37s5-27 15-38 23-14 37-14h730c14 0 27 4 37 14s15 23 15 36z" horiz-adv-x="1000" />

<glyph glyph-name="menu-resize" unicode="&#xe853;" d="M627 767c0-277 0-554 0-834-31 0-62 0-94 0 0 277 0 557 0 834 32 0 63 0 94 0z m-160 0c0-277 0-554 0-834-32 0-63 0-94 0 0 277 0 555 0 834 31 0 62 0 94 0z" horiz-adv-x="1000" />

<glyph glyph-name="arrow-circle" unicode="&#xe854;" d="M500 767c-229 0-417-188-417-417s188-417 417-417 417 188 417 417-188 417-417 417z m0-577l-260 260 60 60 200-200 200 200 60-60-260-260z" horiz-adv-x="1000" />

<glyph glyph-name="tn-error" unicode="&#xe855;" d="M500 767l-342-152v-227c0-211 146-407 342-455 196 48 342 244 342 455v227l-342 152z m38-257v-227h-75v227h75z m-38-385c-27 0-50 23-50 50 0 27 23 50 50 50l0 0c27 0 50-23 50-50l0 0c0-27-23-50-50-50" horiz-adv-x="1000" />

<glyph glyph-name="warning-alert" unicode="&#xe856;" d="M538 256h-75v152h75m0-304h-75v75h75m-455-189h834l-417 720-417-720z" horiz-adv-x="1000" />

<glyph glyph-name="caret-right" unicode="&#xe857;" d="M719 388l-365 364c-10 11-23 15-35 15-13 0-27-4-38-15s-14-23-14-37v-730c0-14 4-27 14-37s23-15 38-15c14 0 27 4 37 15l365 365c10 10 14 22 14 37 0 15-6 27-16 38z" horiz-adv-x="1000" />

<glyph glyph-name="caret-left" unicode="&#xe858;" d="M281 388l365 364c10 11 23 15 35 15 15 0 27-4 38-15s14-23 14-37v-730c0-14-4-27-14-37s-23-15-38-15-27 4-37 15l-363 365c-10 10-14 22-14 37 0 15 4 27 14 38z" horiz-adv-x="1000" />

<glyph glyph-name="logout" unicode="&#xe85a;" d="M546 767h-92v-463h92v463z m225-100l-67-67c73-60 119-150 119-250 0-179-146-325-325-325s-323 146-323 325c0 102 46 192 119 250l-65 67c-89-77-146-190-146-317 0-229 188-417 417-417s417 188 417 417c0 127-57 240-146 317z" horiz-adv-x="1000" />

<glyph glyph-name="opennew" unicode="&#xe85b;" d="M592 767v-92h166l-454-456 67-67 454 454v-166h92v327m-92-742h-650v650h325v92h-325c-50 0-92-42-92-92v-648c0-52 42-94 92-94h648c50 0 92 42 92 92v325h-92l2-325 0 0z" horiz-adv-x="1000" />

<glyph glyph-name="zip" unicode="&#xe85c;" d="M594 119h-94v91h-92v92h92v-92h92m2 280h-94v-92h92v-92h-92v92h-92v92h92v91h-92v94h92v-92h92m233 184h-648c-52 0-94-42-94-92v-648c0-52 42-94 94-94h648c50 0 92 42 92 92v650c0 50-42 92-92 92z" horiz-adv-x="1000" />

<glyph glyph-name="hide" unicode="&#xe85d;" d="M494 483l121-118c0 2 0 4 0 6 0 62-50 114-115 114-2-2-4-2-6-2m-163-31l59-58c-2-9-2-17-2-25 0-63 50-115 114-115 8 0 17 2 25 2l58-58c-25-13-54-21-83-21-104 0-189 86-189 190-3 31 6 60 18 85m-210 211l85-86 17-17c-63-50-113-114-142-189 65-167 227-283 417-283 58 0 115 10 167 31l16-17 111-110 48 48-671 670m331-152c104 0 190-85 190-189 0-25-5-48-15-69l110-110c57 48 103 110 130 179-65 166-227 283-417 283-52 0-104-10-152-27l81-81c25 10 48 14 73 14z" horiz-adv-x="1000" />
</font>
</defs>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="48" height="1998"><style><![CDATA[.B{opacity:.15}.C{fill:#fff}]]></style><use xlink:href="#B" fill="#1d4c60"/><use xlink:href="#C" class="B"/><path d="M25.3 1965.3l-5 17.5h2.5l5-17.5h-2.5zm-8.8 2.5l-5 6.3 5 6.3H19l-5-6.4 5-6.3-2.5.1zm12.5 0l5 6.3-5 6.3h2.5l5-6.3-5-6.3H29z" class="C"/><use xlink:href="#B" y="-50" fill="#01579b"/><use xlink:href="#C" y="-50" class="B"/><path d="M20.6 1914.9v2.3h-4.9c-.4-.7-1.2-1.1-2-1.1a2.26 2.26 0 1 0 0 4.6c.8 0 1.6-.4 2-1.1h2.7c-1.5 1.4-2.4 3.5-2.4 5.7v1.1h-2.3v6.8h6.8v-6.8h-2.3v-1.1c0-1.9.9-3.5 2.3-4.5v1.1h6.8v-1.1c1.4 1 2.3 2.7 2.3 4.5v1.1h-2.3v6.8h6.8v-6.8H32v-1.1c0-2.2-.9-4.2-2.4-5.7h2.7c.4.7 1.2 1.1 2 1.1a2.26 2.26 0 1 0 0-4.6c-.8 0-1.6.4-2 1.1h-4.9v-2.3h-6.8zm2.3 2.3h2.3v2.3h-2.3v-2.3zm-6.9 11.3h2.3v2.3H16v-2.3zm13.7 0H32v2.3h-2.3v-2.3z" class="C"/><use xlink:href="#B" y="-100.1" fill="#37474f"/><path d="M24 1861.4c-2.9 0-5.5.5-7.4 1.4-1 .4-1.8 1-2.3 1.6-.6.6-.9 1.3-.9 2.1v14.8c0 .8.4 1.5.9 2.1s1.4 1.1 2.3 1.6c1.9.9 4.5 1.4 7.4 1.4s5.5-.5 7.4-1.4c1-.4 1.8-1 2.3-1.6.6-.6.9-1.3.9-2.1v-14.8c0-.8-.4-1.5-.9-2.1-.6-.6-1.4-1.1-2.3-1.6-1.9-.9-4.5-1.4-7.4-1.4zm0 1c2.8 0 5.2.5 7 1.3.9.4 1.6.9 2 1.3s.7 1 .7 1.4c0 .5-.2 1-.7 1.4s-1.1.9-2 1.3c-1.8.8-4.2 1.3-7 1.3s-5.2-.5-7-1.3c-.9-.4-1.6-.9-2-1.3s-.7-1-.7-1.4c0-.5.2-1 .7-1.4s1.1-.9 2-1.3c1.8-.7 4.2-1.3 7-1.3zm-9.7 6.3c.6.6 1.3 1.1 2.3 1.5 1.9.9 4.5 1.4 7.4 1.4s5.5-.5 7.4-1.4c.9-.4 1.7-.9 2.3-1.5v2.8c0 .5-.2 1-.7 1.4s-1.1.9-2 1.3c-1.8.8-4.2 1.3-7 1.3s-5.2-.5-7-1.3c-.9-.4-1.6-.9-2-1.3s-.7-1-.7-1.4v-2.8zm0 5.1c.6.6 1.3 1.1 2.3 1.5 1.9.9 4.5 1.4 7.4 1.4s5.5-.5 7.4-1.4c.9-.4 1.7-.9 2.3-1.5v2.8c0 .5-.2 1-.7 1.4s-1.1.9-2 1.3c-1.8.8-4.2 1.3-7 1.3s-5.2-.5-7-1.3c-.9-.4-1.6-.9-2-1.3s-.7-1-.7-1.4v-2.8zm0 5.2c.6.6 1.3 1.1 2.3 1.5 1.9.9 4.5 1.4 7.4 1.4s5.5-.5 7.4-1.4c.9-.4 1.7-.9 2.3-1.5v2.4c0 .5-.2 1-.7 1.4s-1.1.9-2 1.3c-1.8.8-4.2 1.3-7 1.3s-5.2-.5-7-1.3c-.9-.4-1.6-.9-2-1.3s-.7-1-.7-1.4v-2.4z" class="C"/><use xlink:href="#C" y="-100.1" class="B"/><use xlink:href="#B" y="-150" fill="#01579b"/><use xlink:href="#C" y="-150" class="B"/><path d="M24 1825.3h7.3c.2 0 .1 0 .2.1.1.4 0 .8 0 1.2v1.1c0 .1-.1.1-.2.1h-7c-.2 0-.2 0-.2-.1v-1.4c-.1-.3-.1-.7-.1-1zm-4.8 1.6s.1.2.1.3v.6h.8c.1 0 0 0 .1-.1s0-.4 0-.5v-.3c0-.1 0 0 .1-.1s.3-.1.5-.2c1-.4 1.5-1.9.7-2.7-.1-.1-.4-.2-.6-.3s-.5-.2-.7-.3c-.3-.1-1.2-.4-.9-.9s1.1-.3 1.6-.2c.1 0 .2.1.4.1.2.1.2 0 .2-.1s.1-.3.1-.4.2-.4.1-.5-.3-.1-.4-.1-.3-.1-.4-.1h-.4c-.1 0-.1 0-.1-.1v-.7c-.1-.1-.6 0-.7 0h-.2c-.1.1 0 .4 0 .4v.4c-.1.1-.3.1-.4.1-.6.2-.9.6-1.1 1.2-.1.3-.1.6.1.9s.5.5.7.7c.5.3 1 .4 1.5.7.2.1.5.4.4.6s-.5.4-.7.4c-.3.1-.7 0-1.1-.1-.2 0-.3-.1-.4-.2-.1 0-.3-.1-.3-.1 0 .2-.1.4-.2.6 0 .1-.2.4-.1.5 0 .1.2.1.3.1s.2.1.4.1c.1.2.3.3.6.3zm14.8-14.1H15.9c-.7 0-1.6-.1-2.3 0-1.2.2-2.1 1.3-2.2 2.5v16c0 1.1-.1 2.3.7 3.2.9.9 1.9.8 3 .8h18.6c.9 0 1.7-.4 2.2-1.2.3-.5.4-1 .4-1.6v-17.1c.2-1.5-1-2.6-2.3-2.6zm0 20H14.1v-12c0-.9-.1-1.9 0-2.8 0-.2 0-.1.1-.1h19.3c.1 0 .5-.1.6 0 .1 0 0 .3 0 .4v14.2c-.1-.1-.1.1-.1.3z" class="C"/><use xlink:href="#B" y="-200" fill="#cc342d"/><use xlink:href="#C" y="-200" class="B"/><path d="M14.5 1776.4l-3 7.1 5.7-.2-2.7-6.9zm14.8.1c-3.7 2.3-7.3 4.7-10.9 7.1l16.5 2.3-5.6-9.4zm7.1-10.3l-1.5 2.2-5 7.6c-.1.2-.2.3-.1.5l4.8 8c.3.4.5.8.8 1.3l1-19.6zm-22 8.2c.1.1.2.1.3.1l4.6-2.3c.5-.3.8-.8 1.3-1.2l4.3-3.9c.1-.1.2-.2.2-.3l1.5-3c-.6-.2-1.2-.4-1.7-.7-.1 0-.2 0-.3.1l-4.1 2.4c-.7.4-1.2 1-1.8 1.6l-2.8 2.6c-.2.3-.5.5-.7.8-.7.9-1.3 1.8-1.9 2.8l1.1 1zm5.6-1.2l-2.3 9.8 10.9-7.1-8.6-2.7zm6.2-5.4l3.2 7.7 6.2-9.3-9.4 1.6zm-6 4.7l8.4 2.8-3.1-7.6-5.3 4.8zm-2.9 9.1l2.1-8.5-4.5 2.3 2.4 6.2zm17-15.9l-2.7-.8-3.9-1c-.2-.1-.3-.1-.3.1l-1.4 2.8v.2l8.3-1.3zm-5.1-2.1l7.3 2-1.3-3.4-6 1.4zm2.1 22.3l-13.5-1.8c-.9-.1-1.8 0-2.7 0l-2.3.1c-.1 0-.2 0-.2.1l18.7 1.6c0 .1 0 0 0 0zm-19.6-4.6l2.4-5.6c.1-.2.1-.3-.1-.5l-1-1.1-1.5 7.3.2-.1c-.1.1 0 .1 0 0zm15.8-18.2l4.1-.9c.1 0 .2-.1.2-.1v-.1l-5.9.7c.7.4 1.1.6 1.6.4z" class="C"/><use xlink:href="#B" y="-250" fill="#4584b6"/><use xlink:href="#C" y="-250" class="B"/><path d="M26 1723.3c1.7 0 3.2-1.2 3.2-2.9v-5.6c0-1.6-1.2-2.8-2.7-3.1 0 0-1.2-.2-2.2-.2s-1.7.1-2.6.2c-2.5.4-3 1.3-3 3.1v2.6h5.9v1.3h-9c-1.7 0-3.2.8-3.7 2.7-.6 2.2-.6 3.7 0 6 .4 1.7 1.4 3.1 3.1 3.1h2.4v-3.3c0-1.9 1.7-3.9 3.8-3.9H26zm-5-7.1c-.5 0-1-.4-1-.9v-.1c.1-.6.5-1 1-1s1 .4 1 1c0 .5-.4 1-.9 1H21zm15.1 4.3c-.4-1.7-1.4-3.1-3.1-3.1h-2.4v3.3c0 1.9-1.7 3.9-3.8 3.9H22c-1.7 0-3.2 1.2-3.2 2.9v5.6c0 1.6 1.2 2.8 2.7 3.1 0 0 1.2.2 2.2.2s1.7-.1 2.6-.2c2.5-.4 3-1.3 3-3.1v-2.6h-5.9v-1.3h9c1.7 0 3.2-.8 3.7-2.7.5-2.3.5-3.7 0-6zm-9.1 11.3c.5 0 1 .4 1 .9v.1c-.1.6-.5 1-1 1s-1-.4-1-1c0-.5.4-1 .9-1h.1z" class="C"/><use xlink:href="#B" y="-300" fill="#4f5b93"/><use xlink:href="#C" y="-300" class="B"/><path d="M19.7 1678.6c-.1-.8-.4-1.4-1.3-1.7-.3-.1-.6-.3-.8-.5-.3-.2-.7-.3-1.1-.4-.3-.1-.5.1-.7.3-.2.3-.1.4.1.7.1.2.3.4.5.6.3.3.6.7.8 1 .3.3.5.7.4 1.1a3.47 3.47 0 0 1-1.2 2.3c.1 0 0 0-.2 0-.4-.1-.8-.3-1.2-.5-.3-.3-.3-.8.2-1 .1-.1.3-.1.3-.2.3-.2.3-.6.3-.8-.1-.2-.2-.3-.3-.4l-1.7-1.5c-1.4-1.2-2.2-2.6-2.3-4.4-.2-2 .3-3.8 1.4-5.6.4-.7.8-1.3 1.6-1.6.5-.3 1-.3 1.5-.5 1.4-.4 2.9-.7 4.3-.4 1.3.3 2.3.9 2.7 2.2.3.8.3 1.7.3 2.6-.2 1.8-1.4 3.3-3.1 3.7-.8.2-1.1.1-1.5-.5-.3-.4-.6-.8-.8-1.3 0-.1-.1-.2-.1-.3s-.1-.2-.1-.3c.1.8.3 1.5.7 2.1.3.3.5.6.9.7 1.6.2 2.9-.4 3.8-1.7 1.1-1.4 1.3-3.1 1-4.8l-.3-1c-.1-.3 0-.4.3-.4.1 0 .2-.1.3-.1 1.3-.3 2.6-.3 3.9-.3 1.5.2 2.9.6 4.2 1.4 2 1.3 3.2 3.2 3.8 5.4.1.3.1.7.1 1s-.2.3-.3.2l-.5-.5c-.2-.2-.3-.3-.4-.6-.1-.2-.3-.1-.3.1 0 .1-.1.3-.1.3-.3 1.3-.9 2.3-1.8 3.3-.1.2-.3.3-.3.5 0 .5-.1 1 0 1.5l.3 3.1c.1.6-.1.9-.7 1.2-.4.2-.8.3-1.3.3-.7.1-1.3 0-2 0 0-.8.1-1.4-.7-1.8.2-.6.3-1.1.4-1.6.1-.4 0-.8-.3-1.3-.3-.3-.7-.4-1-.3-1 .6-2 .6-3.1.2-.5-.2-.8-.1-1.1.3-.3.5-.4 1-.4 1.6 0 .7.2 1.3.3 2 .1.4 0 .5-.3.6-.8.3-1.7.3-2.6.2h-.1c-.1-.8 0-1.4-.8-1.8.6-.7.5-1.6.4-2.4zm-5.1-2.8c.1-.1.3-.3.3-.5.1-.4-.3-1-.6-1.2-.2-.1-.3-.1-.5.1-.3.4-.7.8-1 1.2-.1.1-.1.2-.2.3-.2.3-.1.4.3.5a.9.9 0 0 0 .5.1c.5-.1.9-.2 1.2-.5zm.1-4.2a.65.65 0 0 0-.6-.6.65.65 0 0 0-.6.6c0 .3.3.6.6.5.4.1.6-.2.6-.5z" class="C"/><use xlink:href="#B" y="-350" fill="#0096c1"/><use xlink:href="#C" y="-350" class="B"/><path d="M33.3 1629c0 .2.1.3.1.8-.1 1.1.3 1.2.2 2.8-.1.7-.4 1.1-.6 2-.1.3-.1.5-.3.8l1.8.3c0-.5.1-.8-.3-1.7-.4-1-.1-1.2-.1-2 0-1.3.8-1.3.3-2.6-.3-.7.1-.7-.1-2.2-.3-1.8 0-5 .6-4.9.5.1.5 1.3.6 1.9.2 1.1-.5 1.7-.7 2.2 0 .3.3.5.5.4.3-.2.6-.7.9-1.2.3-1.1.3-1.9.2-3 0-.7-.1-1-.7-1.5-1.1-1.2-1.7-2.2-2.3-3.5-.2-.3-.5-.7-.8-.9-.8-.7-1-2.2-1.7-3.1-.8-.8-1.7-1.3-2.8-1.3-.9-.1-3 .8-3.8 1.4-.8.7-.7 1.8-2.7 2.8-.8.4-2.3 1.5-2.7 3.7-.5.4-.8-.2-.8-.6.3-1 .8-1.9.8-3-.2-1.5-.8-2.8-1.9-3.3-.9-.4-1.5-.2-1.9.3-1.6 1.1-2.9-.2-3.7 1.7-.1 1.3 2 .4 2.2 1.5-.3 1.3-1 .6-.6 4.5.1 1 .9 1.6 1.5 2.4.9 1 2.5 2 4 1.6 1-.3 1.2.3 1 .8-.3 1.3.1 1.8.1 3 0 .6.3.8.3 2.6.2 1.3-.4 2.5-.9 3.3l1.3-.1c.2-.8.2-1.3.3-2.4.2-.8.7-1 .6-2.2 0-2.2.8-2.2.8-3.2 0-.8.3-1.3 1-1.3.9 0 .8.4.6 1.2-.1 1.3-.4 1.1-.6 1.8-.1.6-.1 1.4.3 1.7.3.3.7.5 1.3.9.3.3 1.3 1 1.3 1.7-.2 1.4-1.7 1.2-1.6 1.8h2.2c.3-.2.3-.6.5-.6s.4.4.7.6c.3 0 .6 0 .8.1.2-.2.3-.8.2-1-.2-1-1.1-.8-.9-1.7.4-.9.7-1 1-1.4.4-.8.8-.8 1-1.3 0-1 0-1.9.2-2.7.1-.8.3-1.3.8-1.9.5-.7.6-.8.9-.3.3 1.8 1.2 3.1 1.6 4.3zm-8.1.5c.1-.1.4-.3.6-.5.4-.3.4-.4.5-.9.2-.9.5-.5.8-1.8 0-.1.2-.8.4-.7.3 0 .3.1.4.9l.3 2.4c0 .2 0 .5-.1.7 0 1-.6 1.5-.8 2-.3.5-.5.8-1.6-.2-.7-.7-1.2-1.3-.5-1.9z" class="C"/><use xlink:href="#B" y="-400" fill="#ea7130"/><use xlink:href="#C" y="-400" class="B"/><path d="M13.8 1566.2c-1.2 0-2.3 1-2.3 2.2v11.2c0 1.3 1 2.2 2.3 2.2h20.5c1.3 0 2.3-1 2.3-2.2v-11.2c0-1.3-1-2.2-2.3-2.2H13.8zm0 1.6h20.5a.68.68 0 0 1 .7.7v11.2c0 .3-.2.7-.7.7H13.8a.68.68 0 0 1-.7-.7v-11.3c0-.3.2-.6.7-.6zm1.6 2.3v7.8h2.3v-5.2l2.3 3.1 2.3-3.1v5.2h2.3v-7.8h-2.3l-2.3 3.2-2.3-3.2c.1 0-2.3 0-2.3 0zm13.3 0v3.9h-2.3l3.5 3.9 3.5-3.9H31v-3.9h-2.3z" class="C"/><use xlink:href="#B" y="-450" fill="#7cb342"/><use xlink:href="#C" y="-450" class="B"/><path d="M19.4 1536.4c-3.1-.9-4.6-2.8-4.6-5.9v-2.5c0-1.8-.8-2.7-2.3-2.7v-2.6c1.5 0 2.2-.8 2.3-2.5v-2.7c0-1.6.4-2.8 1.1-3.8s1.9-1.7 3.4-2.1l.7 2.1c-.6.2-1.1.7-1.5 1.2-.3.6-.5 1.4-.5 2.5v2.7c0 1.9-.8 3.3-2.3 4 1.5.8 2.3 2.1 2.3 4.1v2.7c0 2 .7 3.2 2 3.6l-.6 1.9zm3.8.1l-1.9-1 .5-.8c.6-1 .9-2.1.9-3.1v-2.9h3.1v2.5c0 .9-.2 1.9-.7 2.9s-1.1 1.8-1.9 2.4zm-1.2-16.9c0-.6.2-1.1.6-1.4.4-.4.9-.5 1.5-.5s1.1.2 1.5.5c.4.4.6.8.6 1.4s-.2 1-.6 1.4-.9.5-1.5.5-1.1-.2-1.5-.5-.6-.8-.6-1.4zm5.9 14.8c1.3-.5 2-1.7 2-3.7v-2.7c0-1.9.8-3.3 2.3-4-1.6-.7-2.3-2.1-2.3-4.1v-2.7c0-2-.7-3.2-2-3.7l.7-2.1c1.5.4 2.7 1.1 3.4 2.1.8 1 1.2 2.2 1.2 3.8v2.7c0 1.7.8 2.5 2.3 2.5v2.6c-1.5 0-2.3.9-2.3 2.7v2.8c-.1 3-1.6 4.9-4.6 5.7l-.7-1.9z" class="C"/><use xlink:href="#B" y="-500" fill="#e79627"/><use xlink:href="#C" y="-500" class="B"/><path d="M35 1461.5H13c-.9 0-1.6.8-1.6 1.6v21.9c0 .9.8 1.6 1.6 1.6h21.9c.9 0 1.6-.8 1.6-1.6v-21.9c.1-.9-.7-1.6-1.5-1.6zm-9.8 19.2c0 2.5-1.5 3.6-3.5 3.6-1.9 0-3.2-1.2-3.8-2.5l1.8-1.1c.3.7.9 1.1 1.7 1.1s1.1-.3 1.1-1.5v-7.6H25l.2 8zm5.3 3.5c-2.1 0-3.3-1.1-4-2.5l1.8-1.2c.4.9 1 1.6 2.1 1.6.9 0 1.5-.4 1.5-1.1 0-.8-.4-1.1-1.6-1.6l-.6-.2c-1.7-.7-2.8-1.6-2.8-3.5 0-1.7 1.3-3 3.3-3 1.5 0 2.6.6 3.2 1.8l-1.8 1.2c-.4-.7-.9-1-1.5-1-.7 0-1.1.4-1.1 1 0 .7.4.9 1.5 1.5l.6.2c1.9.9 3 1.7 3 3.6 0 2-1.5 3.2-3.6 3.2z" class="C"/><use xlink:href="#B" y="-550" fill="#f89820"/><use xlink:href="#C" y="-550" class="B"/><path d="M25.5 1411.5c1.3 3.1-4.9 5.2-5.5 7.8-.6 2.5 3.8 5.2 3.8 5.2-.7-1-1.1-1.9-1.8-3.5-1.2-2.6 6.7-4.9 3.5-9.5zm4.2 4.4s-5.5.3-5.9 3.9c-.1 1.6 1.4 2.5 1.6 3.6 0 .9-.9 1.8-.9 1.8s1.8-.3 2.3-1.8c.6-1.6-1.2-2.7-1-3.9.2-1.3 3.9-3.6 3.9-3.6zm1.4 8.2c-.6 0-1.2.1-1.8.6 1.2-.2 2.1.4 2.1 1.2 0 1.9-2.6 3.6-2.6 3.6s4.2-.5 4.2-3.5c-.1-1.2-.9-1.9-1.9-1.9zm-10.1 0s-5.1-.1-5.1 1.3 6.7 1.6 11.4.7c0 0 1.2-.9 1.6-1.1-3.1.7-10.1.8-10.1.1 0-.5 2.2-1 2.2-1zm-1.2 2.8c-.8 0-1.9.6-1.9 1.2 0 1.2 5.9 2.1 10.1.3l-1.4-.9c-3 1-8.5.6-6.8-.6zm.7 2.6c-1.1 0-1.8.7-1.8 1.2 0 1.4 6.4 1.7 8.9.1l-1.6-1c-1.8.7-6.5.8-5.5-.3zm-3.5 1.4c-1.8 0-2.9.8-2.9 1.4 0 3.5 17.8 3.2 17.8-.2 0-.6-.7-.9-.9-1 1.4 3.3-14.5 3.1-14.5 1.1 0-.4 1.1-.9 2.2-.7l-.9-.4c-.3-.2-.5-.2-.8-.2zm16.9 2.3c-2.7 2.6-9.6 3.6-16.5 1.9 6.8 2.7 16.4 1.2 16.5-1.9z" class="C"/><use xlink:href="#B" y="-600" fill="#e34f26"/><use xlink:href="#C" y="-600" class="B"/><path d="M35.2 1361.5H12.8l2.4 22.5 8.8 2.6 8.8-2.6 2.4-22.5zm-5.2 7.6h-9.6l.2 2.8h9.1l-.7 8-5 1.6h-.1l-5-1.7-.2-3.2h2.6l.1 1.2 2.9.7 2.8-.7.3-3.4h-8.8l-.7-7.9h12.3l-.2 2.6z" class="C"/><use xlink:href="#B" y="-650" fill="#0277bd"/><use xlink:href="#C" y="-650" class="B"/><path d="M12.8 1311.6l2.4 22.4 8.7 2.5 8.7-2.5 2.5-22.5-22.3.1zm17 10.3l-.4 7.9-5.4 1.8-5.4-1.8-.2-3.8h2.8l.1 1.7 2.8.9 2.9-.9.2-3.1h-6l-.1-2.8h6.2l.1-2.8H18l-.2-2.5h12.4l-.4 5.4z" class="C"/><use xlink:href="#B" y="-699.9" fill="#195772"/><use xlink:href="#C" y="-699.9" class="B"/><path d="M35.2 1267.8l-5.3 3.1c-.9-1.3-2-2.2-3.4-2.7-1.3-.4-2.8-.4-4.1.2-2.9 1.1-4.3 3.8-4 6.5s2.2 4.9 5 5.4c2.9.6 5.4-.8 6.6-3 .9.4 1.8 1 2.7 1.4.9.6 1.9 1 2.7 1.5-3.5 6-10.2 7.4-15 5.4-5.5-2.2-8.5-7.2-8.2-12.4.4-6.4 5-10.4 9.7-11.5 6.3-1.1 11.3 2.4 13.3 6.1z" class="C"/><use xlink:href="#B" y="-749.9" fill="#79c257"/><use xlink:href="#C" y="-749.9" class="B"/><path d="M34.5 1221.3a1.54 1.54 0 0 0-1.5-1.5 1.54 1.54 0 0 0-1.5 1.5v6.4a1.54 1.54 0 0 0 1.5 1.5 1.54 1.54 0 0 0 1.5-1.5v-6.4zm-18 0a1.54 1.54 0 0 0-1.5-1.5 1.54 1.54 0 0 0-1.5 1.5v6.4a1.54 1.54 0 0 0 1.5 1.5 1.47 1.47 0 0 0 1.5-1.5v-6.4zm10.8-7.4l1.1-2c.1-.1 0-.2-.1-.3h-.1c-.1 0-.2 0-.2.1l-1.1 2c-.9-.4-1.9-.6-3-.6s-2.1.2-3 .6l-1.1-2c0-.1-.1-.1-.2 0-.1 0-.2.2-.1.3l1.1 2c-2.1 1.1-3.5 3.2-3.5 5.5h13.8c-.1-2.4-1.5-4.5-3.6-5.6zm-6.5 3a.65.65 0 0 1-.6-.6.65.65 0 0 1 .6-.6.65.65 0 0 1 .6.6c-.1.4-.3.6-.6.6zm6.3 0a.65.65 0 0 1-.6-.6.65.65 0 0 1 .6-.6.65.65 0 0 1 .6.6c0 .4-.3.6-.6.6zm-10 3.1v10c0 .9.7 1.7 1.7 1.7h1.1v3.4a1.54 1.54 0 0 0 1.5 1.5 1.54 1.54 0 0 0 1.5-1.5v-3.4H25v3.4a1.54 1.54 0 0 0 1.5 1.5 1.54 1.54 0 0 0 1.5-1.5v-3.4h1.1c.9 0 1.7-.7 1.7-1.7v-10H17.1z" class="C"/><use xlink:href="#B" y="-799.9" fill="#d91b22"/><use xlink:href="#C" y="-799.9" class="B"/><path d="M13.4 1186.6v-4.9h.1c1.9 0 3.3-.9 4.6-2.1.9-1 1.7-2.1 2.2-3.4.8-1.4 1.2-2.9 1.9-4.4.4-1.3 1-2.8 1.8-4 1-1.8 2.2-3.1 3.9-4.3.9-.6 1.7-1.1 2.7-1.3.9-.2 1.9-.4 2.8-.4h1.3v4.8h-.4c-1.2 0-2.3.3-3.3 1-.7.6-1.2 1-1.8 1.7s-.9 1.3-1.2 2.1c0 .1-.1.1-.1.1h4.2v5h-5.9c-.2 0-.2 0-.2.2-.7 1.8-1.4 3.3-2.6 4.8-2.2 2.8-5 4.4-8.4 5.1-.4.1-.9.1-1.2.2-.3-.2-.4-.2-.4-.2z" class="C"/><use xlink:href="#B" y="-849.9" fill="#170f43"/><use xlink:href="#C" y="-849.9" class="B"/><path d="M15.5 1126.5v5.6h-4v-16.4H18c1.3 0 2.3.3 3.3.7s1.8 1.1 2.3 2c.5.8.8 1.8.8 2.9 0 1.6-.6 2.9-1.8 3.8s-2.8 1.4-4.7 1.4h-2.4zm0-3h2.6c.8 0 1.3-.2 1.8-.6.4-.4.6-.9.6-1.7s-.2-1.4-.6-1.8c-.4-.5-1-.7-1.7-.7h-2.7v4.8zm17.2 5.1c0-.3-.2-.6-.5-.8s-1-.4-1.9-.6-1.7-.5-2.3-.8-1.1-.8-1.4-1.3c-.4-.4-.6-1-.6-1.5 0-1.1.5-2.1 1.4-2.7.9-.8 2.2-1.1 3.7-1.1 1.6 0 2.9.3 3.9 1.1s1.5 1.7 1.5 2.9h-3.8c0-1-.5-1.5-1.6-1.5-.4 0-.8.1-1 .3s-.4.5-.4.8.2.6.5.8c.3.3.8.4 1.6.5l1.9.5c1.8.7 2.7 1.7 2.7 3.4 0 1.1-.5 2-1.5 2.7-1 .8-2.3 1.1-3.8 1.1-1.1 0-2-.2-2.8-.6s-1.5-.9-1.9-1.5c-.5-.7-.7-1.3-.7-2.1h3.6c0 .6.2 1 .6 1.2.4.3.8.4 1.4.4.5 0 .9-.1 1.2-.3 0-.2.2-.5.2-.9z" class="C"/><use xlink:href="#B" y="-899.9" fill="#f77800"/><use xlink:href="#C" y="-899.9" class="B"/><path d="M24.6 1080.4h-7.3l-1.4 4.2h-4.4l7.5-20.2h3.9l7.6 20.2H26l-1.4-4.2zm-6.2-3.4h5l-2.5-7.6-2.5 7.6zm13.6-11.3c0-.6.2-1.1.6-1.5s.9-.6 1.6-.6 1.2.2 1.6.6.6.9.6 1.5-.2 1.1-.6 1.5-1 .6-1.6.6-1.2-.2-1.6-.6-.6-.9-.6-1.5zm4.3 18.9h-4v-15h4v15z" class="C"/><path fill="#fbc02d" d="M0 1000.1h48v10.7H0v-10.7m2.7 13.3h42.7v34.7H2.7v-34.7m14.6 8c-.7 0-1.3.6-1.3 1.3v4h16v-4c0-.7-.6-1.3-1.3-1.3H17.3z"/><use xlink:href="#B" y="-999.9" fill="#2196f3"/><use xlink:href="#C" y="-999.9" class="B"/><path d="M11.5 967.8v2.5h13.2v-2.5H11.5zm0 5v2.5h25v-2.5h-25zm0 5v2.5h18.8v-2.5H11.5zm0 5v2.5h25v-2.5h-25zm24.2-19.9h-7.5c-.4 0-.8.4-.8.8v5.8c0 .5.4.8.8.8h7.5c.4 0 .8-.4.8-.8v-5.8c0-.4-.4-.8-.8-.8m-6.7 5.8l1.5-1.9 1 1.3 1.5-1.9 1.9 2.5H29zm-17.5-5.8v2.5h13.2v-2.5H11.5z" class="C"/><use xlink:href="#B" y="-1049.9" fill="#ff6d00"/><use xlink:href="#C" y="-1049.9" class="B"/><path d="M11.5 933h25v-17.8h-25V933zm16.1-13.4h6.3v1.8h-6.3v-1.8zm0 3.6h6.3v1.8h-6.3v-1.8zm0 3.6h3.6v1.8h-3.6v-1.8zm-8.1-8.1v5.4h5.4c0 2.9-2.4 5.4-5.4 5.4s-5.4-2.4-5.4-5.4 2.5-5.4 5.4-5.4z" class="C"/><use xlink:href="#B" y="-1099.9" fill="#43a047"/><use xlink:href="#C" y="-1099.9" class="B"/><path d="M33.7 864.4H11.5v19.4h25v-19.4h-2.8zm-19.4 2.8h5.6v2.8h-5.6v-2.8zm0 5.5h5.6v2.8h-5.6v-2.8zm0 5.6h5.6v2.8h-5.6v-2.8zm19.4 2.7H22.6v-2.8h11.1v2.8zm0-5.5H22.6v-2.8h11.1v2.8zm0-5.6H22.6v-2.8h11.1v2.8z" class="C"/><use xlink:href="#B" y="-1149.9" fill="#0e85cd"/><use xlink:href="#C" y="-1149.9" class="B"/><path d="M24 811.6c-6.9 0-12.5 5.6-12.5 12.5 0 .9.1 1.7.3 2.6 1.1-.3 2.3-.5 3.4-.5 1.9 0 3.7.4 5.4 1.1 2.1-1.5 4.8-2.4 7.6-2.4 1.8 0 3.5.4 5 1 .1 0 .1.1.1.2s-.1.2-.2.2h-1.2c-4.4 0-8.3 1.6-10.7 4.9 0 .1-.1.2-.1.2l-.1.1h-.1c-2.3-2.1-5.3-3-8.6-3 1.7 4.9 6.3 8.3 11.8 8.3 6.9 0 12.5-5.6 12.5-12.5-.1-7.1-5.7-12.7-12.6-12.7zm9.8 7.5h-.2c-.1 0-.3 0-.4-.1-2.5-.2-4.9.5-6.5 2.3-.1.1-.1.1-.2 0-1.2-1.4-3-2-5-2.2-.7-.1-1.4 0-2.1.1-.1 0-.1-.1-.1-.1s0-.1.1-.1c1.3-.7 2.7-1 4.2-.8 1.1.1 2.1.4 3 .9 1.3-.8 2.9-1.1 4.5-1 .9.1 1.8.3 2.6.7 0 0 .1 0 .1.1v.2c.1-.1.1 0 0 0z" class="C"/><use xlink:href="#B" y="-1199.9" fill="#2a5699"/><use xlink:href="#C" y="-1199.9" class="B"/><path d="M36.5 765.3c.1-.5-.3-1-.8-1.1h-9.4v-2.3h-1.7l-13.1 2.3v19.9l13 2.3h1.8v-2.3h8.5c.5 0 1 0 1.4-.3.3-.5.2-1.1.3-1.7v-16.8zM21 778c-.5.2-1.2 0-1.7 0l-1.2-5.6-1.1 5.5c-.5 0-1.1-.1-1.6-.1l-1.5-7.5c.5 0 1 0 1.5-.1l.9 5.4 1.2-5.6c.5 0 1.1-.1 1.6-.1l1.2 5.7 1-5.9c.6 0 1.1-.1 1.7-.1l-2 8.4zm14.6 5.2h-9.4v-2.3h7.4v-1.1h-7.4v-1.4h7.4v-1.1h-7.4v-1.4h7.4v-1.1h-7.4v-1.4h7.4v-1.3h-7.4v-1.4h7.4v-1.1h-7.4v-1.5h7.4V767h-7.4v-2h9.4v18.2z" class="C"/><use xlink:href="#B" y="-1249.9" fill="#d24625"/><use xlink:href="#C" y="-1249.9" class="B"/><path d="M36.5 715.6c.1-.7-.4-1.2-1.1-1.1h-9.1v-2.6h-1.6c-4.4.7-8.8 1.5-13.2 2.3v19.9l13 2.3h1.8v-2.8h8.5c.5 0 1 0 1.4-.3.3-.5.2-1.1.3-1.7v-16zM19.8 725c-.6.3-1.4.3-2.1.3v3.3c-.6 0-1.1-.1-1.7-.1v-9.1c1.5.1 3.4-.6 4.7.5 1.3 1.5.9 4.3-.9 5.1zm15.8 7.6h-9.4v-2.3H33v-1.1h-6.8v-1.4H33v-1.1h-6.8V725c1.1.3 2.4.3 3.4-.3 1.1-.6 1.7-1.9 1.7-3.1h-3.7v-3.7l-1.4.3v-2.8h9.4v17.2zM32 721c-.1-2-1.8-3.6-3.7-3.7v3.7H32zm-14.3-.1v2.9c.6-.1 1.3 0 1.6-.6a2.12 2.12 0 0 0 0-1.9c-.3-.5-1-.4-1.6-.4z" class="C"/><use xlink:href="#B" y="-1299.9" fill="#207245"/><use xlink:href="#C" y="-1299.9" class="B"/><path d="M36.5 665.7v-.7c-.1-.5-.2-.7-.7-.8-.4-.1-.9-.1-1.3-.1h-8.1v-2.3l-2.4.1-7.3 1.3-4.8.8h-.2v19.9l7.8 1.3 5.1.9h1.8v-2.6H35c.3 0 .6 0 .9-.1.4-.1.6-.3.6-.6 0-.4.1-.8.1-1.2l-.1-15.9zM20 678.5c-.1 0-.1-.1-.2-.2l-1.3-3.3-.1-.1c-.1.1-.1.3-.2.4l-1.2 2.8c0 .1-.1.1-.1.1h-1.8c.1-.1.1-.2.1-.3l1.9-3.8c0-.1.1-.3 0-.4l-1.7-3.8c0-.1-.1-.2-.1-.3.6 0 1.2-.1 1.9-.1l1.2 3.3 1.3-3.2c.1-.2.1-.2.3-.2.5 0 1.1-.1 1.7-.1-.2.5-.5 1-.7 1.4l-1.4 2.9c-.1.2-.1.4 0 .6l2.1 4.2c0 .1.1.1.1.2-.6 0-1.2 0-1.8-.1zm15.6 4.4h-9.3v-1.7h2.2v-2h-2.2v-1.1h2.2v-2h-2.2V675h2.2v-2h-2.2v-1.1h2.2v-2h-2.2v-1.1h2.2v-2h-2.2v-1.7h9.3v17.8zm-2-16.2h-4v2h4v-2zm0 6.3h-4v2h4v-2zm0 6.2h-4v2h4v-2zm0-9.4h-4v2h4v-2zm-3.9 8.3h4v-2h-4v2z" class="C"/><use xlink:href="#B" y="-1349.9" fill="#a33639"/><use xlink:href="#C" y="-1349.9" class="B"/><path d="M36.5 617.3c.1-1.2-1-2-2-2.3-2.6-.9-5.5-1-8.2-.6v-2.5h-1.7l-13.1 2.3v19.9l13 2.3h1.8v-3.1c2.7.4 5.6.3 8.2-.6 1-.3 2.1-1.1 2-2.3v-13.1zm-16.4 11.3l-.5-2.1c-.9 0-1.7 0-2.6-.1l-.5 2c-.6 0-1.1-.1-1.7-.1l2.5-9c.7 0 1.3-.1 2-.1l2.8 9.6-2-.2zm6.2-13.4c2.5-.3 5.2-.3 7.6.4.7.3 1.6.6 1.7 1.4-.1.7-.8 1-1.3 1.2-2.6.9-5.4 1-8 .5v-3.5zm0 9a28.11 28.11 0 0 0 5.8 0c1.2-.2 2.5-.5 3.5-1.3-.1 1.2.1 2.4-.1 3.7-.5.6-1.3.8-2 1-2.4.6-4.9.6-7.3.3l.1-3.7zm9.3 6.9c-.8.9-2.1 1-3.2 1.3-2 .3-4.1.3-6.1 0v-3.7a28.11 28.11 0 0 0 5.8 0c1.3-.2 2.5-.5 3.6-1.3l-.1 3.7zm0-9.1c-.5.6-1.3.8-2 1-2.4.6-4.8.6-7.3.3v-3.7a28.11 28.11 0 0 0 5.8 0c1.3-.2 2.6-.5 3.6-1.3l-.1 3.7zm-18.3 2.9h1.9l-1-4c-.2 1.4-.6 2.7-.9 4z" class="C"/><use xlink:href="#B" y="-1399.9" fill="#eb3c00"/><use xlink:href="#C" y="-1399.9" class="B"/><path d="M34.4 564v20.4l-7.3 2.2-13.4-4.8 13.4 1.6v-17.7l-8.7 2.1v12l-4.7 2v-15.2l13.4-5 7.3 2.4z" class="C"/><use xlink:href="#B" y="-1449.9" fill="#d50a0a"/><use xlink:href="#C" y="-1449.9" class="B"/><path d="M24.4 514.5c-.1 1.6-.3 3.5-.7 5.2v.4c.8 2 2 3.8 3.6 5.2.4.3.9.7 1.3.9a.45.45 0 0 0 .5 0c1.5-.2 3-.3 4.5-.2.7.1 1.3.1 2 .4.5.2.8.6.8 1.2 0 .3 0 .7-.1.9-.2.8-.7 1.1-1.5 1.2-1.1.1-2.3-.2-3.3-.6l-3.1-1.3c-.2-.1-.5-.2-.7-.2-2.9.4-5.7 1.1-8.4 2-.1 0-.2.1-.2.2l-2.4 3.6c-.7.9-1.4 1.9-2.6 2.4-.5.2-1 .2-1.6 0-.2-.1-.3-.2-.5-.2-.6-.2-.7-.7-.6-1.3.2-.7.6-1.1 1.1-1.6 1.1-1.1 2.3-2 3.7-2.6.1 0 .1-.1.2-.1.7-.2 1.1-.7 1.4-1.3l2.2-4.1c.7-1.2 1.1-2.6 1.7-3.8.1-.2.1-.4.1-.6l-1-5.2c-.1-.8 0-1.6.2-2.5.2-.5.6-.7 1-.8.3-.1.7-.1 1-.1.5 0 .7.3 1 .7.5.8.4 1.5.4 2.2zM20 528.7c2.1-.8 4.3-1.3 6.5-1.7l-2-2c-.6-.7-1.1-1.5-1.6-2.2l-2.9 5.9zm3-11.1c.2-.2.2-.3.3-.4.3-1 .4-2 .2-3-.1-.3-.2-.7-.3-1.1-.1-.2-.2-.2-.4-.3-.1.2-.2.3-.2.4-.2 1.1-.1 2.3.1 3.4.1.2.2.6.3 1zm8.3 9.9v.2l2.8.9c.4.1.9.1 1.4 0 .3 0 .4-.2.2-.5-.2-.2-.5-.2-.7-.3-.7-.2-1.4-.2-2.2-.2-.6-.1-1-.1-1.5-.1zm-14.8 3.7c-1.3 1.1-2.6 2.3-3.4 3.8 1.5-.8 2.4-2.3 3.4-3.8z" class="C"/><use xlink:href="#B" y="-1499.9" fill="#42a5f5"/><path d="M11.5 462.9v2.5h25v-2.5h-25zm0 5v2.5h18.8v-2.5H11.5zm0 5v2.5h25v-2.5h-25zm0 5v2.5h18.8v-2.5H11.5zm0 5v2.5h25v-2.5h-25z" class="C"/><use xlink:href="#C" y="-1499.9" class="B"/><use xlink:href="#B" y="-1549.9" fill="#f44336"/><use xlink:href="#C" y="-1549.9" class="B"/><path d="M11.5 413v22.4h25V413h-25zm4.3 20.8H13v-2.7h2.8v2.7zm0-5.5H13v-2.8h2.8v2.8zm0-5.6H13v-2.8h2.8v2.8zm0-5.5H13v-2.8h2.8v2.8zm19.3 16.6h-2.8v-2.7h2.8v2.7zm0-5.5h-2.8v-2.8h2.8v2.8zm0-5.6h-2.8v-2.8h2.8v2.8zm0-5.5h-2.8v-2.8h2.8v2.8z" class="C"/><use xlink:href="#B" y="-1599.9" fill="#ef5350"/><use xlink:href="#C" y="-1599.9" class="B"/><path d="M34.2 361.9h-.6l-12.5 1.7c-1.2.2-2.1 1.2-2.1 2.6v11.5c-.7-.2-1.6-.2-2.6 0-2.7.6-5 3-5 5.3 0 2.2 2.2 3.7 5 3 2.7-.6 5-3 5-5.3v-11L34 368v7.1c-.7-.2-1.6-.2-2.6 0-2.7.6-5 3-5 5.3s2.2 3.7 5 3c2.7-.6 5-3 5-5.3v-13.7c.2-1.5-.9-2.5-2.2-2.5z" class="C"/><use xlink:href="#B" y="-1649.9" fill="#4caf50"/><path d="M14 314.1c-1.4 0-2.5 1.1-2.5 2.5v14.9c0 1.4 1.1 2.5 2.5 2.5h20c1.4 0 2.5-1.1 2.5-2.5v-14.8c0-1.4-1.1-2.5-2.5-2.5 0-.1-20-.1-20-.1zm0 2.6h20v14.9H14v-14.9zm15.6 2.4a1.97 1.97 0 0 0-1.9 1.9c0 1.1.9 1.9 1.9 1.9 1.1 0 1.9-.9 1.9-1.9a1.97 1.97 0 0 0-1.9-1.9zM19 321.7l-2.5 2.4v5h14.9v-2l-5-3-2.5 1.3-4.9-3.7z" class="C"/><use xlink:href="#C" y="-1649.9" class="B"/><use xlink:href="#B" y="-1699.8" fill="#42a5f5"/><path d="M11.5 263v2.5h25V263h-25zm0 5v2.5h25V268h-25zm0 5v2.5h25V273h-25zm0 5v2.5h25V278h-25zm0 5v2.5h25V283h-25z" class="C"/><use xlink:href="#C" y="-1699.8" class="B"/><use xlink:href="#B" y="-1749.7" fill="#5293af"/><use xlink:href="#C" y="-1749.7" class="B"/><path d="M17.1 222.4H15v-8l-2.5.8v-1.7l4.3-1.6h.2v10.5h.1zm10.4-4.3c0 1.4-.3 2.6-.9 3.3-.6.8-1.5 1.1-2.6 1.1s-2-.4-2.6-1.1c-.6-.8-.9-1.8-.9-3.2v-1.9c0-1.5.3-2.6.9-3.3.6-.8 1.5-1.1 2.6-1.1s2 .4 2.6 1.1.9 1.8.9 3.2v1.9zm-2-2.1c0-.9-.1-1.5-.4-1.9s-.6-.6-1.1-.6-.8.2-1.1.6c-.2.4-.4 1-.4 1.8v2.5c0 .9.1 1.5.3 1.9s.6.6 1.1.6.9-.2 1.1-.6.3-1 .4-1.8V216h.1zm10.5 2.1c0 1.4-.3 2.6-.9 3.3s-1.5 1.1-2.6 1.1-2-.4-2.6-1.1c-.6-.8-.9-1.8-.9-3.2v-1.9c0-1.5.3-2.6.9-3.3.6-.8 1.5-1.1 2.6-1.1s2 .4 2.6 1.1.9 1.8.9 3.2v1.9zm-2.1-2.1c0-.9-.1-1.5-.4-1.9s-.6-.6-1.1-.6-.8.2-1.1.6c-.2.4-.4 1-.4 1.8v2.5c0 .9.1 1.5.3 1.9s.6.6 1.1.6.9-.2 1.1-.6.3-1 .4-1.8V216h.1zm-14.8 16.3c0 1.4-.3 2.6-.9 3.3-.6.8-1.5 1.1-2.6 1.1s-2-.4-2.6-1.1c-.6-.8-.9-1.8-.9-3.2v-1.9c0-1.5.3-2.6.9-3.3.6-.8 1.5-1.1 2.6-1.1s2 .4 2.6 1.1.9 1.8.9 3.2v1.9zm-2.1-2.1c0-.9-.1-1.5-.4-1.9-.2-.4-.6-.6-1.1-.6s-.8.2-1.1.6c-.2.4-.4 1-.4 1.8v2.5c0 .9.1 1.5.3 1.9s.6.6 1.1.6.9-.2 1.1-.6.3-1 .4-1.8v-2.5h.1zm10.5 2.1c0 1.4-.3 2.6-.9 3.3-.6.8-1.5 1.1-2.6 1.1s-2-.4-2.6-1.1c-.6-.8-.9-1.8-.9-3.2v-1.9c0-1.5.3-2.6.9-3.3.6-.8 1.5-1.1 2.6-1.1s2 .4 2.6 1.1.9 1.8.9 3.2v1.9zm-2-2.1c0-.9-.1-1.5-.4-1.9-.2-.4-.6-.6-1.1-.6s-.8.2-1.1.6c-.2.4-.4 1-.4 1.8v2.5c0 .9.1 1.5.3 1.9s.6.6 1.1.6.9-.2 1.1-.6.3-1 .4-1.8v-2.5h.1zm8.5 6.5h-2.1v-8l-2.5.8v-1.7l4.3-1.6h.3v10.5z" class="C"/><path d="M45.6 165v23.5c-.5 1.5-1.1 2-2.5 2H12.8c-1.6 0-2.5-.9-2.5-2.5v-35.5c0-1.6.9-2.5 2.5-2.5h15.4v12.4c0 .3 0 .5.1.8.2 1.1 1.1 1.7 2.3 1.7h14.5l.5.1zM8 157.6v33c0 1.1.3 1.9 1.3 2.3.4.2.9.2 1.3.2h27.1v2.7c-.1 1-.8 1.8-1.7 2-.2.1-.4.1-.8.1l-30.3.2c-1.2 0-2.1-.6-2.3-1.7-.2-.3-.2-.5-.2-.8V160c0-1.5.9-2.4 2.4-2.4H8zm22-7.5l15.6 13.4c-.2 0-.3.1-.4.1H32.4c-1.5 0-2.5-.9-2.5-2.4v-10.6c.1-.2.1-.4.1-.5zm8.5-6.9h-34C2 143.2 0 141 0 138.4v-28.9c0-2.7 2-4.8 4.5-4.8h13.6l4.5 4.8h15.8c2.5 0 4.5 2.1 4.5 4.8H4.5v24.1l4.9-19.2H48l-5.2 20.4c-.5 2.1-2.2 3.6-4.3 3.6zM19.2 54.8H4.8c-2.7 0-4.8 2.1-4.8 4.8v28.8c0 2.6 2.2 4.8 4.8 4.8h38.4c2.6 0 4.8-2.2 4.8-4.8v-24c0-2.7-2.2-4.8-4.8-4.8H24l-4.8-4.8z" fill="#1565c0"/><path fill="#478fcc" d="M32.1,0H8.6C7.2,0,5.8,1,5.8,2.3v43.1c0,1.4,1.4,2.6,2.8,2.6h31.3c1.3,0,2.3-1.2,2.3-2.6V9.6L32.1,0z"/><path d="M21.5 32.8h3.8v3.8h-3.8v-3.8M24 11.5c6.7.2 9.6 7 5.7 12.1-1 1.3-2.7 2.1-3.5 3.2-.8 1-.8 2.3-.8 3.5h-3.8c0-2.1 0-3.8.8-5.1s2.5-2 3.5-2.8c3-2.8 2.3-6.8-1.9-7.1a3.8 3.8 0 0 0-3.8 3.8h-3.7c0-4.3 3.5-7.6 7.5-7.6z" class="C"/><path d="M32.1,7.2c0,1.4,1,2.4,2.3,2.4h7.7L32.1,0V7.2z" class="B"/><defs ><path id="B" d="M32.1 1950H8.6c-1.4 0-2.8 1-2.8 2.3v43.1c0 1.4 1.4 2.6 2.8 2.6h31.3c1.3 0 2.3-1.2 2.3-2.6v-35.8l-10.1-9.6z"/><path id="C" d="M32.1 1957.2c0 1.4 1 2.4 2.3 2.4h7.7l-10-9.6v7.2z"/></defs></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="1966"><style><![CDATA[.B{opacity:.15}.C{fill:#fff}]]></style><use xlink:href="#B" fill="#1d4c60"/><use xlink:href="#C" class="B"/><path d="M8.4 1955.1l-1.7 5.8h.8l1.7-5.8h-.8zm-2.9.8l-1.7 2.1 1.7 2.1h.8l-1.7-2.1 1.7-2.1h-.8zm4.2 0l1.7 2.1-1.7 2.1h.8l1.7-2.1-1.7-2.1h-.8z" class="C"/><use xlink:href="#B" y="-50" fill="#01579b"/><use xlink:href="#C" y="-50" class="B"/><path d="M6.9 1905v.8H5.2c-.1-.2-.4-.4-.7-.4-.4 0-.8.3-.8.8s.3.8.8.8c.3 0 .5-.1.7-.4h.9c-.5.5-.8 1.2-.8 1.9v.4h-.7v2.3h2.3v-2.3h-.8v-.4c0-.6.3-1.2.8-1.5v.4h2.3v-.4c.5.3.8.9.8 1.5v.4h-.9v2.3h2.3v-2.3h-.7v-.4c0-.7-.3-1.4-.8-1.9h.9c.1.2.4.4.7.4.4 0 .8-.3.8-.8s-.3-.8-.8-.8c-.3 0-.5.1-.7.4H9.1v-.8H6.9zm.7.7h.8v.8h-.8v-.8zm-2.3 3.8h.8v.8h-.8v-.8zm4.6 0h.8v.8h-.8v-.8z" class="C"/><use xlink:href="#B" y="-100.1" fill="#37474f"/><path d="M8 1853.7c-1 0-1.8.2-2.5.5-.3.1-.6.3-.8.5s-.3.4-.3.7v4.9c0 .3.1.5.3.7s.5.4.8.5c.6.3 1.5.5 2.5.5s1.8-.2 2.5-.5c.3-.1.6-.3.8-.5s.3-.4.3-.7v-4.9c0-.3-.1-.5-.3-.7s-.5-.4-.8-.5c-.7-.3-1.5-.5-2.5-.5zm0 .4c.9 0 1.7.2 2.3.4.3.1.5.3.7.4.1.1.2.3.2.5s-.1.3-.2.5c-.2.1-.4.3-.7.4-.6.3-1.4.4-2.3.4s-1.7-.2-2.3-.4c-.3-.1-.5-.3-.7-.4-.1-.1-.2-.3-.2-.5s.1-.3.2-.5c.2-.1.4-.3.7-.4.6-.2 1.4-.4 2.3-.4zm-3.2 2.1c.2.2.4.4.8.5.6.3 1.5.5 2.5.5s1.8-.2 2.5-.5c.3-.1.6-.3.8-.5v.9c0 .2-.1.3-.2.5-.2.1-.4.3-.7.4-.6.3-1.4.4-2.3.4s-1.7-.2-2.3-.4c-.3-.1-.5-.3-.7-.4-.1-.1-.2-.3-.2-.5v-.9zm0 1.7c.2.2.4.4.8.5.6.3 1.5.5 2.5.5s1.8-.2 2.5-.5c.3-.1.6-.3.8-.5v.9c0 .2-.1.3-.2.5-.2.1-.4.3-.7.4-.6.3-1.4.4-2.3.4s-1.7-.2-2.3-.4c-.3-.1-.5-.3-.7-.4s-.2-.3-.2-.5v-.9zm0 1.7c.2.2.4.4.8.5.6.3 1.5.5 2.5.5s1.8-.2 2.5-.5c.3-.1.6-.3.8-.5v.8c0 .2-.1.3-.2.5-.2.1-.4.3-.7.4-.6.3-1.4.4-2.3.4s-1.7-.2-2.3-.4c-.3-.1-.5-.3-.7-.4s-.2-.3-.2-.5v-.8z" class="C"/><use xlink:href="#C" y="-100.1" class="B"/><use xlink:href="#B" y="-150" fill="#01579b"/><use xlink:href="#C" y="-150" class="B"/><path d="M8 1808.4h2.5v.8H8v-.8zm-1.6.6v.3h.3v-.3s.1 0 .2-.1c.3-.1.5-.6.2-.9 0 0-.1-.1-.2-.1s-.2-.1-.2-.1c-.1 0-.4-.1-.3-.3s.4-.1.5-.1h.2v-.1s.1-.1 0-.2-.1 0-.1 0h-.2v-.2h-.3v.2h-.1a.78.78 0 0 0-.4.4v.3l.2.2c.2.1.3.1.5.2.1 0 .2.1.1.2 0 .1-.2.1-.2.1h-.4c-.1 0-.1 0-.1-.1H6c0 .1 0 .1-.1.2 0 0-.1.1 0 .2h.2c.1.1.2.2.3.2zm4.9-4.7H4.5c-.4.1-.7.4-.7.8v5.3c0 .4 0 .8.2 1.1.3.3.6.3 1 .3h6.2c.3 0 .6-.1.7-.4.1-.2.1-.3.1-.5v-5.7c.2-.6-.2-.9-.7-.9zm0 6.6H4.7v-4.9c0-.1 0 0 0 0h6.6v4.9c0-.1 0 0 0 0z" class="C"/><use xlink:href="#B" y="-200" fill="#cc342d"/><use xlink:href="#C" y="-200" class="B"/><path d="M4.8 1758.8l-1 2.4 1.9-.1-.9-2.3zm5 0l-3.6 2.4 5.5.8-1.9-3.2zm2.3-3.4l-.5.7-1.7 2.5c0 .1-.1.1 0 .2l1.6 2.7c.1.1.2.3.3.4l.3-6.5zm-7.3 2.7c0 .1.1.1 0 0l1.6-.7c.2-.1.3-.3.4-.4l1.4-1.3.1-.1.5-1c-.2-.1-.4-.1-.6-.2h-.1l-1.4.8c-.2.1-.4.3-.6.5l-.9.9c-.1.1-.2.2-.2.3l-.6.9.4.3zm1.9-.4l-.8 3.3 3.6-2.4-2.8-.9zm2-1.8l1.1 2.6 2.1-3.1-3.2.5zm-2 1.6l2.8.9-1-2.5-1.8 1.6zm-.9 3l.7-2.8-1.5.8.8 2zm5.6-5.3l-.9-.3-1.3-.3h-.1l-.5.9v.1l2.8-.4zm-1.7-.7l2.4.7-.4-1.1-2 .4zm.7 7.5l-4.5-.6H4.1l6.3.6zm-6.5-1.6l.8-1.9v-.2l-.3-.4-.5 2.5c0 .1 0 .1 0 0zm5.3-6l1.4-.3h.1l-2 .2a.9.9 0 0 0 .5.1z" class="C"/><use xlink:href="#B" y="-250" fill="#4584b6"/><use xlink:href="#C" y="-250" class="B"/><path d="M8.7 1707.8c.6 0 1.1-.4 1.1-1v-1.9c0-.5-.4-.9-.9-1 0 0-.4-.1-.7-.1s-.6 0-.9.1c-.8.1-1 .4-1 1v.9h2v.4h-3c-.6 0-1.1.3-1.2.9-.2.7-.2 1.2 0 2 .1.6.5 1 1 1h.8v-1.1c0-.6.6-1.3 1.3-1.3l1.5.1zm-1.7-2.4c-.2 0-.3-.1-.3-.3s.2-.3.3-.3c.2 0 .3.1.3.3 0 .1-.1.3-.3.3zm5 1.4c-.1-.6-.5-1-1-1h-.8v1.1c0 .6-.6 1.3-1.3 1.3H7.3c-.6 0-1.1.4-1.1 1v1.9c0 .5.4.9.9 1a3.55 3.55 0 0 0 .7.1c.3 0 .6 0 .9-.1.8-.1 1-.4 1-1v-.9h-2v-.4h3c.6 0 1.1-.3 1.2-.9.3-.8.3-1.3.1-2.1zm-3 3.8c.2 0 .3.1.3.3s-.2.3-.3.3c-.2 0-.3-.1-.3-.3 0-.1.1-.3.3-.3z" class="C"/><use xlink:href="#B" y="-300" fill="#4f5b93"/><use xlink:href="#C" y="-300" class="B"/><path d="M6.6 1659.5c0-.3-.1-.5-.4-.6-.1 0-.2-.1-.3-.2s-.2-.1-.4-.1c-.1 0-.2 0-.2.1-.1.1 0 .1 0 .2s.1.1.2.2l.3.3c.1.1.2.2.1.4 0 .3-.2.6-.4.8h-.1a.76.76 0 0 1-.4-.2c-.1-.1-.1-.3.1-.3 0 0 .1 0 .1-.1.1-.1.1-.2.1-.3s-.1-.1-.1-.1l-.6-.5c-.5-.4-.7-.9-.8-1.5-.1-.7.1-1.3.5-1.9.1-.2.3-.4.5-.5s.3-.1.5-.2c.5-.1 1-.2 1.4-.1s.8.3.9.7c.1.3.1.6.1.9-.1.6-.5 1.1-1 1.2-.3.1-.4 0-.5-.2-.1-.1-.2-.3-.3-.4v-.2c0 .3.1.5.2.7.1.1.2.2.3.2.5.1 1-.1 1.3-.6.4-.5.4-1 .3-1.6l-.1-.3c0-.1 0-.1.1-.1h.1c.4-.1.9-.1 1.3-.1.5.1 1 .2 1.4.5.7.4 1.1 1.1 1.3 1.8v.3c0 .1-.1.1-.1.1l-.2-.2c-.1-.1-.1-.1-.1-.2s-.1 0-.1 0v.1c-.1.4-.3.8-.6 1.1 0 .1-.1.1-.1.2v.5l.1 1c0 .2 0 .3-.2.4-.1.1-.3.1-.4.1h-.7c0-.3 0-.5-.2-.6.1-.2.1-.4.1-.5s0-.3-.1-.4-.2-.1-.3-.1c-.3.2-.7.2-1 .1-.2-.1-.3 0-.4.1-.1.2-.1.3-.1.5s.1.4.1.7c0 .1 0 .2-.1.2-.3.1-.6.1-.9.1 0-.3 0-.5-.3-.6.1-.2.1-.5.1-.8zm-1.7-.9s.1-.1.1-.2a.76.76 0 0 0-.2-.4h-.2c-.1.1-.2.3-.3.4 0 0 0 .1-.1.1-.1.1 0 .1.1.2h.2c.1 0 .3 0 .4-.1zm0-1.4c0-.1-.1-.2-.2-.2s-.2.1-.2.2.1.2.2.2.2-.1.2-.2z" class="C"/><use xlink:href="#B" y="-350" fill="#0096c1"/><use xlink:href="#C" y="-350" class="B"/><path d="M11.1 1609.7v.3c0 .4.1.4.1.9 0 .2-.1.4-.2.7 0 .1 0 .2-.1.3l.6.1c0-.2 0-.3-.1-.6s0-.4 0-.7c0-.4.3-.4.1-.9-.1-.2 0-.2 0-.7-.1-.6 0-1.7.2-1.6.2 0 .2.4.2.6.1.4-.2.6-.2.7s.1.2.2.1.2-.2.3-.4c.1-.4.1-.6.1-1 0-.2 0-.3-.2-.5-.4-.4-.6-.7-.8-1.2l-.3-.3c-.3-.2-.3-.7-.6-1s-.6-.4-.9-.4-1 .3-1.3.5-.2.6-.9.9c-.3.1-.8.5-.9 1.2-.2.1-.3-.1-.3-.2.1-.3.3-.6.3-1-.1-.5-.3-.9-.6-1.1-.3-.1-.5-.1-.6.1-.5.4-1-.1-1.2.6 0 .4.7.1.7.5-.1.4-.3.2-.2 1.5 0 .3.3.5.5.8.3.3.8.7 1.3.5.3-.1.4.1.3.3-.1.4 0 .6 0 1 0 .2.1.3.1.9.1.4-.1.8-.3 1.1h.4c.1-.3.1-.4.1-.8.1-.3.2-.3.2-.7 0-.7.3-.7.3-1.1 0-.3.1-.4.3-.4.3 0 .3.1.2.4 0 .4-.1.4-.2.6 0 .2 0 .5.1.6a1.38 1.38 0 0 0 .4.3c.1.1.4.3.4.6-.1.5-.6.4-.5.6h.7c.1-.1.1-.2.2-.2s.1.1.2.2h.3c.1-.1.1-.3.1-.3-.1-.3-.4-.3-.3-.6s.2-.3.3-.5c.1-.3.3-.3.3-.4 0-.3 0-.6.1-.9 0-.3.1-.4.3-.6s.2-.3.3-.1c.1.4.4.9.5 1.3zm-2.7.1l.2-.2c.1-.1.1-.1.2-.3.1-.3.2-.2.3-.6 0 0 .1-.3.1-.2.1 0 .1 0 .1.3l.1.8v.2c0 .3-.2.5-.3.7s-.2.3-.5-.1c-.3-.2-.4-.4-.2-.6z" class="C"/><use xlink:href="#B" y="-400" fill="#ea7130"/><use xlink:href="#C" y="-400" class="B"/><path d="M4.6 1555.4c-.4 0-.8.3-.8.7v3.7c0 .4.3.7.8.7h6.8c.4 0 .8-.3.8-.7v-3.7c0-.4-.3-.7-.8-.7H4.6zm0 .5h6.8c.1 0 .2.1.2.2v3.7c0 .1-.1.2-.2.2H4.6c-.1 0-.2-.1-.2-.2v-3.8s0-.1.2-.1zm.5.8v2.6h.8v-1.7l.8 1 .8-1v1.7h.8v-2.6h-.9l-.8 1.1-.8-1.1c.1 0-.7 0-.7 0zm4.5 0v1.3h-.8l1.2 1.3 1.2-1.3h-.8v-1.3h-.8z" class="C"/><use xlink:href="#B" y="-450" fill="#7cb342"/><use xlink:href="#C" y="-450" class="B"/><path d="M6.5 1512.1c-1-.3-1.5-.9-1.5-2v-.8c0-.6-.3-.9-.8-.9v-.9c.5 0 .7-.3.8-.8v-.9c0-.5.1-.9.4-1.3.2-.3.6-.6 1.1-.7l.2.7c-.2.1-.4.2-.5.4s-.2.5-.2.8v.9c0 .6-.3 1.1-.8 1.3.5.3.8.7.8 1.4v.9c0 .7.2 1.1.7 1.2l-.2.7zm1.2.1l-.6-.3.2-.3a1.93 1.93 0 0 0 .3-1v-1h1v.8c0 .3-.1.6-.2 1-.2.3-.4.6-.7.8zm-.4-5.7c0-.2.1-.4.2-.5s.3-.2.5-.2.4.1.5.2.2.3.2.5-.1.3-.2.5-.3.2-.5.2-.4-.1-.5-.2-.2-.3-.2-.5zm2 5c.4-.2.7-.6.7-1.2v-.9c0-.6.3-1.1.8-1.3-.5-.2-.8-.7-.8-1.4v-.9c0-.7-.2-1.1-.7-1.2l.2-.7c.5.1.9.4 1.1.7.3.3.4.7.4 1.3v.9c0 .6.3.8.8.8v.9c-.5 0-.8.3-.8.9v.9c0 1-.5 1.6-1.5 1.9l-.2-.7z" class="C"/><use xlink:href="#B" y="-500" fill="#e79627"/><use xlink:href="#C" y="-500" class="B"/><path d="M11.7 1453.8H4.3c-.3 0-.5.3-.5.5v7.3c0 .3.3.5.5.5h7.3c.3 0 .5-.3.5-.5v-7.3c.1-.2-.2-.5-.4-.5zm-3.3 6.4c0 .8-.5 1.2-1.2 1.2a1.51 1.51 0 0 1-1.3-.8l.6-.4c.1.2.3.4.6.4s.4-.1.4-.5v-2.5h.8l.1 2.6zm1.8 1.2c-.7 0-1.1-.4-1.3-.8l.6-.4c.1.3.3.5.7.5.3 0 .5-.1.5-.4s-.1-.4-.5-.5l-.2-.1c-.6-.2-.9-.5-.9-1.2 0-.6.4-1 1.1-1 .5 0 .9.2 1.1.6l-.6.4a.55.55 0 0 0-.5-.3c-.2 0-.4.1-.4.3s.1.3.5.5l.2.1c.6.3 1 .6 1 1.2-.1.7-.6 1.1-1.3 1.1z" class="C"/><use xlink:href="#B" y="-550" fill="#f89820"/><use xlink:href="#C" y="-550" class="B"/><path d="M8.5 1403.8c.4 1-1.6 1.7-1.8 2.6-.2.8 1.3 1.7 1.3 1.7-.2-.3-.4-.6-.6-1.2-.5-.8 2.2-1.5 1.1-3.1zm1.4 1.5s-1.8.1-2 1.3c0 .5.5.8.5 1.2 0 .3-.3.6-.3.6s.6-.1.8-.6-.4-.9-.3-1.3 1.3-1.2 1.3-1.2zm.5 2.7c-.2 0-.4 0-.6.2.4-.1.7.1.7.4 0 .6-.9 1.2-.9 1.2s1.4-.2 1.4-1.2a.65.65 0 0 0-.6-.6zm-3.4 0s-1.7 0-1.7.4 2.2.5 3.8.2l.5-.4c-1 .2-3.4.3-3.4 0 .1 0 .8-.2.8-.2zm-.4 1c-.3 0-.6.2-.6.4 0 .4 2 .7 3.4.1l-.5-.3c-1 .3-2.9.2-2.3-.2zm.2.8c-.4 0-.6.2-.6.4 0 .5 2.1.6 3 0l-.5-.3c-.6.3-2.2.3-1.9-.1zm-1.1.5c-.6 0-1 .3-1 .5 0 1.2 5.9 1.1 5.9-.1 0-.2-.2-.3-.3-.3.5 1.1-4.8 1-4.8.4 0-.1.4-.3.7-.2l-.3-.1c-.1-.2-.1-.2-.2-.2zm5.6.8c-.9.9-3.2 1.2-5.5.6 2.3.9 5.5.4 5.5-.6z" class="C"/><use xlink:href="#B" y="-600" fill="#e34f26"/><use xlink:href="#C" y="-600" class="B"/><path d="M11.7 1353.8H4.3l.8 7.5 2.9.9 2.9-.9.8-7.5zm-1.7 2.6H6.8l.1.9h3l-.2 2.7-1.7.5-1.7-.6-.1-1.1h.9v.4l1 .2.9-.2.1-1.1H6.2l-.2-2.6h4.1l-.1.9z" class="C"/><use xlink:href="#B" y="-650" fill="#0277bd"/><use xlink:href="#C" y="-650" class="B"/><path d="M4.3 1303.9l.8 7.5 2.9.8 2.9-.8.8-7.5c0-.1-7.4 0-7.4 0zm5.6 3.4l-.1 2.6-1.8.6-1.8-.6-.1-1.3H7v.6l.9.3 1-.3.1-1H7v-.9h2.1v-.9H6l-.1-.8H10l-.1 1.7z" class="C"/><use xlink:href="#B" y="-699.9" fill="#195772"/><use xlink:href="#C" y="-699.9" class="B"/><path d="M11.7 1256l-1.8 1c-.3-.4-.7-.7-1.1-.9-.4-.1-.9-.1-1.4.1-1 .4-1.4 1.3-1.3 2.2s.7 1.6 1.7 1.8 1.8-.3 2.2-1c.3.1.6.3.9.5s.6.3.9.5c-1.2 2-3.4 2.5-5 1.8-1.8-.7-2.8-2.4-2.7-4.1.1-2.1 1.7-3.5 3.2-3.8 2.1-.5 3.8.7 4.4 1.9z" class="C"/><use xlink:href="#B" y="-749.9" fill="#79c257"/><use xlink:href="#C" y="-749.9" class="B"/><g class="C"><use xlink:href="#D"/><use xlink:href="#D" x="-6"/><path d="M9.1 1204.7l.4-.7v-.1h-.1l-.4.7c-.3-.1-.6-.2-1-.2s-.7.1-1 .2l-.4-.7h-.1s-.1.1 0 .1l.4.7c-.7.4-1.2 1.1-1.2 1.8h4.6c0-.7-.5-1.4-1.2-1.8zm-2.2 1c-.1 0-.2-.1-.2-.2s.1-.2.2-.2.2.1.2.2-.1.2-.2.2zm2.1 0c-.1 0-.2-.1-.2-.2s.1-.2.2-.2.2.1.2.2-.1.2-.2.2zm-3.3 1v3.3c0 .3.2.6.6.6h.4v1.1a.47.47 0 0 0 .5.5.47.47 0 0 0 .5-.5v-1.1h.7v1.1a.47.47 0 0 0 .5.5.47.47 0 0 0 .5-.5v-1.1h.4c.3 0 .6-.2.6-.6v-3.3H5.7z"/></g><use xlink:href="#B" y="-799.9" fill="#d91b22"/><use xlink:href="#C" y="-799.9" class="B"/><path d="M4.5 1162.3v-1.6c.6 0 1.1-.3 1.5-.7.3-.3.6-.7.7-1.1.3-.5.4-1 .6-1.5a3.79 3.79 0 0 1 .6-1.3c.3-.6.7-1 1.3-1.4.3-.2.6-.4.9-.4.3-.1.6-.1.9-.1h.4v1.6h-.1c-.4 0-.8.1-1.1.3-.2.2-.4.3-.6.6-.2.2-.3.4-.4.7h1.4v1.7h-2c-.1 0-.1 0-.1.1-.2.6-.5 1.1-.9 1.6a4.59 4.59 0 0 1-2.8 1.7c-.1 0-.3 0-.4.1l.1-.3z" class="C"/><use xlink:href="#B" y="-849.9" fill="#170f43"/><use xlink:href="#C" y="-849.9" class="B"/><path d="M5.2 1108.9v1.9H3.8v-5.5H6c.4 0 .8.1 1.1.2s.6.4.8.7a1.69 1.69 0 0 1 .3 1c0 .5-.2 1-.6 1.3s-.9.5-1.6.5c0-.1-.8-.1-.8-.1zm0-1H6c.3 0 .4-.1.6-.2.1-.1.2-.3.2-.6s-.1-.5-.2-.6c-.1-.2-.3-.2-.6-.2h-.8v1.6zm5.7 1.7c0-.1-.1-.2-.2-.3s-.3-.1-.6-.2l-.8-.3c-.2-.1-.4-.3-.5-.4s-.2-.3-.2-.5c0-.4.2-.7.5-.9.3-.3.7-.4 1.2-.4s1 .1 1.3.4.5.6.5 1h-1.3a.47.47 0 0 0-.5-.5c-.1 0-.3 0-.3.1-.1.1-.1.2-.1.3s.1.2.2.3.3.1.5.2l.6.2c.6.2.9.6.9 1.1 0 .4-.2.7-.5.9-.3.3-.8.4-1.3.4-.4 0-.7-.1-.9-.2-.3-.1-.5-.3-.6-.5-.2-.2-.2-.4-.2-.7h1.2c0 .2.1.3.2.4s.3.1.5.1.3 0 .4-.1c-.1-.2 0-.3 0-.4z" class="C"/><use xlink:href="#B" y="-899.9" fill="#f77800"/><use xlink:href="#C" y="-899.9" class="B"/><path d="M8.2 1060.2H5.8l-.5 1.4H3.8l2.5-6.7h1.3l2.5 6.7H8.7l-.5-1.4zm-2.1-1.1h1.7l-.8-2.5-.9 2.5zm4.6-3.8c0-.2.1-.4.2-.5s.3-.2.5-.2.4.1.5.2.2.3.2.5-.1.4-.2.5-.3.2-.5.2-.4-.1-.5-.2c-.2-.1-.2-.3-.2-.5zm1.4 6.3h-1.3v-5h1.3v5z" class="C"/><path fill="#fbc02d" d="M0 1000.1h16v3.6H0v-3.6m.9 4.4h14.2v11.6H.9v-11.6m4.9 2.7c-.2 0-.4.2-.4.4v1.3h5.3v-1.3c0-.2-.2-.4-.4-.4H5.8z"/><use xlink:href="#B" y="-999.9" fill="#2196f3"/><use xlink:href="#C" y="-999.9" class="B"/><path d="M3.8 956v.8h4.4v-.8H3.8zm0 1.7v.8h8.3v-.8H3.8zm0 1.6v.8h6.3v-.8H3.8zm0 1.7v.8h8.3v-.8H3.8zm8.1-6.6H9.4c-.1 0-.3.1-.3.3v1.9c0 .2.1.3.3.3h2.5c.1 0 .3-.1.3-.3v-1.9c0-.2-.2-.3-.3-.3m-2.2 1.9l.5-.6.3.4.5-.6.6.8H9.7zm-5.9-1.9v.8h4.4v-.8H3.8z" class="C"/><use xlink:href="#B" y="-1049.9" fill="#ff6d00"/><use xlink:href="#C" y="-1049.9" class="B"/><path d="M3.8 911.1h8.3v-5.9H3.8v5.9zm5.4-4.5h2.1v.6H9.2v-.6zm0 1.2h2.1v.6H9.2v-.6zm0 1.2h1.2v.6H9.2v-.6zm-2.7-2.7v1.8h1.8a1.79 1.79 0 0 1-1.8 1.8 1.79 1.79 0 1 1 0-3.6z" class="C"/><use xlink:href="#B" y="-1099.9" fill="#43a047"/><use xlink:href="#C" y="-1099.9" class="B"/><path d="M11.2 854.9H3.8v6.5h8.3v-6.5h-.9zm-6.4.9h1.9v.9H4.8v-.9zm0 1.8h1.9v.9H4.8c0 .1 0-.9 0-.9zm0 1.9h1.9v.9H4.8v-.9zm6.4.9H7.5v-.9h3.7v.9zm0-1.8H7.5v-.9h3.7v.9zm0-1.9H7.5v-.9h3.7v.9z" class="C"/><use xlink:href="#B" y="-1149.9" fill="#0e85cd"/><use xlink:href="#C" y="-1149.9" class="B"/><path d="M8 803.9a4.23 4.23 0 0 0-4.2 4.2c0 .3 0 .6.1.9.4-.1.8-.2 1.1-.2.6 0 1.2.1 1.8.4.7-.5 1.6-.8 2.5-.8.6 0 1.2.1 1.7.3v.1c0 .1 0 .1-.1.1h-.4c-1.5 0-2.8.5-3.6 1.6v.1c-.8-.7-1.8-1-2.9-1 .6 1.6 2.1 2.8 3.9 2.8a4.23 4.23 0 0 0 4.2-4.2c.1-2.4-1.8-4.3-4.1-4.3zm3.3 2.5h-.2c-.8-.1-1.6.2-2.2.8h-.1c-.4-.5-1-.7-1.7-.7h-.7c.4-.2.9-.3 1.4-.3a1.69 1.69 0 0 1 1 .3c.4-.3 1-.4 1.5-.3.4-.1.7 0 1 .2-.1-.1 0-.1 0 0z" class="C"/><use xlink:href="#B" y="-1199.9" fill="#2a5699"/><use xlink:href="#C" y="-1199.9" class="B"/><path d="M12.2 755.2c0-.2-.1-.3-.3-.4H8.8v-.8h-.6l-4.4.8v6.6l4.3.8h.6v-.8h2.8c.2 0 .3 0 .5-.1.1-.2.1-.4.1-.6v-5.5h.1zM7 759.4c-.2.1-.4 0-.6 0l-.4-1.9-.4 1.8h-.5l-.5-2.5h.5l.3 1.8.4-1.9h.5l.4 1.9.3-2h.6l-.6 2.8zm4.9 1.7H8.7v-.8h2.5v-.3H8.7v-.5h2.5v-.4H8.7v-.5h2.5v-.4H8.7v-.5h2.5v-.4H8.7v-.3h2.5v-.4H8.7v-.5h2.5v-.4H8.7v-.7h3.1v6.1z" class="C"/><use xlink:href="#B" y="-1249.9" fill="#d24625"/><use xlink:href="#C" y="-1249.9" class="B"/><path d="M12.2 705.3c0-.2-.1-.4-.4-.4h-3v-.9h-.6l-4.4.8v6.6l4.3.8h.6v-.9h2.8c.2 0 .3 0 .5-.1.1-.2.1-.4.1-.6v-5.3h.1zm-5.6 3.1c-.2.1-.5.1-.7.1v1.1h-.6v-3c.5 0 1.1-.2 1.6.2.4.4.3 1.3-.3 1.6zm5.3 2.5H8.7v-.8H11v-.4H8.7v-.5H11v-.2H8.7v-.6c.4.1.8.1 1.1-.1a1.1 1.1 0 0 0 .6-1H9.2V706l-.5.1v-.9h3.1v5.7h.1zm-1.2-3.8c0-.7-.6-1.2-1.2-1.2v1.2h1.2zm-4.8-.1v1c.2 0 .4 0 .5-.2s.1-.4 0-.6-.3-.2-.5-.2z" class="C"/><use xlink:href="#B" y="-1299.9" fill="#207245"/><use xlink:href="#C" y="-1299.9" class="B"/><path d="M12.2 655.3v-.2c0-.2-.1-.2-.2-.3H8.8v-.8H8l-2.4.4-1.6.3h-.1v6.6l2.6.4 1.7.3h.6v-.9H12c.1 0 .2-.1.2-.2v-5.6zm-5.5 4.3c-.1 0-.1-.1 0 0l-.5-1.2s0 .1-.1.1l-.4.9H5v-.1l.6-1.3v-.1l-.6-1.3v-.1h.6l.4 1.1.4-1.1c0-.1 0-.1.1-.1h.6c-.1.2-.2.3-.2.5l-.5 1v.2l.7 1.4v.1h-.4zm5.2 1.4H8.8v-.6h.7v-.7h-.7v-.4h.7v-.7h-.7v-.4h.7v-.7h-.7v-.4h.7v-.7h-.7v-.4h.7v-.7h-.7v-.6h3.1v6.3zm-.7-5.4H9.9v.7h1.3v-.7zm0 2.1H9.9v.7h1.3v-.7zm0 2.1H9.9v.7h1.3v-.7zm0-3.1H9.9v.7h1.3v-.7zm-1.3 2.7h1.3v-.7H9.9v.7z" class="C"/><use xlink:href="#B" y="-1349.9" fill="#a33639"/><use xlink:href="#C" y="-1349.9" class="B"/><path d="M12.2 605.8c0-.4-.3-.7-.7-.8-.9-.3-1.8-.3-2.7-.2v-.8h-.6l-4.4.8v6.6l4.3.8h.6v-1c.9.1 1.9.1 2.7-.2.3-.1.7-.4.7-.8l.1-4.4zm-5.5 3.8l-.2-.7h-.9l-.2.7h-.6l.8-3h.7l.9 3.2-.5-.2zm2.1-4.5c.8-.1 1.7-.1 2.5.1.2.1.5.2.6.5 0 .2-.3.3-.4.4-.9.3-1.8.3-2.7.2v-1.2zm0 3c.6.1 1.3.1 1.9 0 .4-.1.8-.2 1.2-.4v1.2c-.2.2-.4.3-.7.3-.8.2-1.6.2-2.4.1v-1.2zm3.1 2.3c-.3.3-.7.3-1.1.4-.7.1-1.4.1-2 0v-1.2c.6.1 1.3.1 1.9 0 .4-.1.8-.2 1.2-.4v1.2zm0-3c-.2.2-.4.3-.7.3-.8.2-1.6.2-2.4.1v-1.2c.6.1 1.3.1 1.9 0 .4-.1.9-.2 1.2-.4v1.2zm-6.1 1h.6l-.3-1.4-.3 1.4z" class="C"/><use xlink:href="#B" y="-1399.9" fill="#eb3c00"/><use xlink:href="#C" y="-1399.9" class="B"/><path d="M11.5 554.7v6.8l-2.5.8-4.5-1.6 4.5.5v-5.9l-2.9.7v4l-1.6.7v-5.1l4.5-1.7 2.5.8z" class="C"/><use xlink:href="#B" y="-1449.9" fill="#d50a0a"/><use xlink:href="#C" y="-1449.9" class="B"/><path d="M8.1 504.9c0 .5-.1 1.2-.2 1.7v.1c.3.7.7 1.3 1.2 1.7.1.1.3.2.4.3h.2c.5-.1 1-.1 1.5-.1.2 0 .4 0 .7.1.2.1.3.2.3.4v.3c-.1.3-.2.4-.5.4-.4 0-.8-.1-1.1-.2l-1-.4c-.1 0-.2-.1-.2-.1-1 .1-1.9.4-2.8.7 0 0-.1 0-.1.1l-.8 1.2a2.36 2.36 0 0 1-.9.8.45.45 0 0 1-.5 0c-.1 0-.1-.1-.2-.1-.2-.1-.2-.2-.2-.4.1-.2.2-.4.4-.5.4-.4.8-.7 1.2-.9h.1c.2-.1.4-.2.5-.4l.7-1.4.6-1.3v-.2l-.3-1.7c0-.3 0-.5.1-.8.1-.2.2-.2.3-.3h.3c.2 0 .2.1.3.2.1.3 0 .6 0 .8zm-1.4 4.7c.7-.3 1.4-.4 2.2-.6l-.7-.7a3.04 3.04 0 0 1-.5-.7l-1 2zm1-3.7l.1-.1c.1-.3.1-.7.1-1 0-.1-.1-.2-.1-.4 0-.1-.1-.1-.1-.1 0 .1-.1.1-.1.1-.1.4 0 .8 0 1.1 0 .2 0 .3.1.4zm2.7 3.3l.9.4h.5c.1 0 .1-.1.1-.2-.1-.1-.2-.1-.2-.1-.2-.1-.5-.1-.7-.1h-.6zm-4.9 1.3c-.4.4-.9.8-1.1 1.3.5-.3.8-.8 1.1-1.3z" class="C"/><use xlink:href="#B" y="-1499.9" fill="#42a5f5"/><path d="M3.8 454.4v.8h8.3v-.8H3.8zm0 1.6v.8h6.3v-.8H3.8zm0 1.7v.8h8.3v-.8H3.8zm0 1.7v.8h6.3v-.8H3.8zm0 1.6v.8h8.3v-.8H3.8z" class="C"/><use xlink:href="#C" y="-1499.9" class="B"/><use xlink:href="#B" y="-1549.9" fill="#f44336"/><use xlink:href="#C" y="-1549.9" class="B"/><path d="M3.8 404.4v7.5h8.3v-7.5H3.8zm1.5 6.9h-1v-.9h.9v.9zm0-1.8h-1v-.9h.9v.9zm0-1.9h-1v-.9h.9v.9zm0-1.8h-1v-.9h.9v.9zm6.4 5.5h-.9v-.9h.9v.9zm0-1.8h-.9v-.9h.9v.9zm0-1.9h-.9v-.9h.9v.9zm0-1.8h-.9v-.9h.9v.9z" class="C"/><use xlink:href="#B" y="-1599.9" fill="#ef5350"/><use xlink:href="#C" y="-1599.9" class="B"/><path d="M11.4 354h-.2l-4.2.6c-.4.1-.7.4-.7.9v3.8c-.2-.1-.5-.1-.9 0-.9.2-1.7 1-1.7 1.8 0 .7.7 1.2 1.7 1 .9-.2 1.7-1 1.7-1.8v-3.7l4.2-.6v2.4c-.2-.1-.5-.1-.9 0-.9.2-1.7 1-1.7 1.8s.7 1.2 1.7 1c.9-.2 1.7-1 1.7-1.8v-4.6c.1-.4-.3-.8-.7-.8z" class="C"/><use xlink:href="#B" y="-1649.9" fill="#4caf50"/><path d="M4.7 304.8c-.5 0-.8.4-.8.8v5c0 .5.4.8.8.8h6.7c.5 0 .8-.4.8-.8v-4.9c0-.5-.4-.8-.8-.8-.1-.1-6.7-.1-6.7-.1zm0 .8h6.7v5H4.7v-5zm5.2.8a.65.65 0 0 0-.6.6c0 .4.3.6.6.6.4 0 .6-.3.6-.6a.65.65 0 0 0-.6-.6zm-3.6.9l-.8.8v1.7h5v-.7l-1.7-1-.8.4-1.7-1.2z" class="C"/><use xlink:href="#C" y="-1649.9" class="B"/><use xlink:href="#B" y="-1699.8" fill="#42a5f5"/><path d="M3.8 254.5v.8h8.3v-.8H3.8zm0 1.6v.8h8.3v-.8H3.8zm0 1.7v.8h8.3v-.8H3.8zm0 1.7v.8h8.3v-.8H3.8zm0 1.6v.8h8.3v-.8H3.8z" class="C"/><use xlink:href="#C" y="-1699.8" class="B"/><use xlink:href="#B" y="-1749.7" fill="#5293af"/><use xlink:href="#C" y="-1749.7" class="B"/><g class="C"><path d="M5.7 207.7H5V205l-.8.3v-.6l1.4-.5h.1v3.5z"/><use xlink:href="#E"/><path d="M12 206.2c0 .5-.1.9-.3 1.1s-.5.4-.9.4-.7-.1-.9-.4-.3-.6-.3-1.1v-.6c0-.5.1-.9.3-1.1.2-.3.5-.4.9-.4s.7.1.9.4c.2.2.3.6.3 1.1v.6zm-.7-.7c0-.3 0-.5-.1-.6s-.2-.2-.4-.2-.3.1-.4.2-.1.3-.1.6v.8c0 .3 0 .5.1.6s.2.2.4.2.3-.1.4-.2.1-.3.1-.6v-.8z"/><use xlink:href="#E" x="-2.8" y="4.8"/><use xlink:href="#E" y="4.8"/><path d="M11.3 212.4h-.7v-2.7l-.8.3v-.6l1.4-.5h.1v3.5z"/></g><path d="M15.2 155v7.8c-.2.5-.4.7-.8.7H4.3c-.5 0-.8-.3-.8-.8v-11.8c0-.5.3-.8.8-.8h5.1v4.4c.1.4.4.6.8.6H15l.2-.1zm-12.5-2.4v11c0 .4.1.6.4.8.1.1.3.1.4.1h9v.9c0 .3-.3.6-.6.7h-.3l-10.1.1c-.4 0-.7-.2-.8-.6-.1-.1-.1-.2-.1-.3v-11.9c0-.5.3-.8.8-.8h1.3zm7.3-2.5l5.2 4.5h-4.4c-.5 0-.8-.3-.8-.8v-3.7zm2.8-35.7H1.5c-.8 0-1.5-.7-1.5-1.6v-9.6c0-.9.7-1.6 1.5-1.6H6l1.5 1.6h5.3c.8 0 1.5.7 1.5 1.6H1.5v8l1.6-6.4H16l-1.7 6.8c-.2.7-.8 1.2-1.5 1.2zM6.4 51.6H1.6A1.58 1.58 0 0 0 0 53.2v9.6a1.58 1.58 0 0 0 1.6 1.6h12.8a1.58 1.58 0 0 0 1.6-1.6v-8a1.58 1.58 0 0 0-1.6-1.6H8l-1.6-1.6z" fill="#1565c0"/><path fill="#478fcc" d="M10.7 0H2.9c-.5 0-1 .3-1 .8v14.4c0 .5.5.9.9.9h10.4c.4 0 .8-.4.8-.9v-12L10.7 0z"/><path d="M7.2 10.9h1.3v1.3H7.2v-1.3M8 3.8c2.2.1 3.2 2.3 1.9 4-.3.5-.9.8-1.2 1.1s-.3.8-.3 1.2H7.2c0-.7 0-1.3.3-1.7.2-.4.8-.7 1.1-.9 1-.9.8-2.3-.6-2.4-.7 0-1.3.6-1.3 1.3H5.5c0-1.5 1.2-2.6 2.5-2.6z" class="C"/><path d="M10.7 2.4c0 .5.3.8.8.8H14L10.7 0v2.4z" class="B"/><defs ><path id="B" d="M10.7 1950H2.9c-.5 0-.9.3-.9.8v14.4c0 .5.5.9.9.9h10.4c.4 0 .8-.4.8-.9v-11.9l-3.4-3.3z"/><path id="C" d="M10.7 1952.4c0 .5.3.8.8.8H14l-3.3-3.2v2.4z"/><path id="D" d="M11.5 1207.2a.47.47 0 0 0-.5-.5.47.47 0 0 0-.5.5v2.1a.47.47 0 0 0 .5.5.47.47 0 0 0 .5-.5v-2.1z"/><path id="E" d="M9.2 206.2c0 .5-.1.9-.3 1.1-.2.3-.5.4-.9.4s-.7-.1-.9-.4-.3-.6-.3-1.1v-.6c0-.5.1-.9.3-1.1.2-.3.5-.4.9-.4s.7.1.9.4c.2.2.3.6.3 1.1v.6zm-.7-.7c0-.3 0-.5-.1-.6s-.2-.2-.4-.2-.3.1-.4.2-.1.3-.1.6v.8c0 .3 0 .5.1.6s.2.2.4.2.3-.1.4-.2.1-.3.1-.6v-.8z"/></defs></svg>
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
	 viewBox="0 0 16 16" style="enable-background:new 0 0 16 16;" xml:space="preserve">
<style type="text/css">.st0{fill:#333333;}</style>
<path class="st0" d="M11.4,0.7c1.8,0.9,3.1,2.1,3.9,3.9l-1,0.5c-0.6-1.3-2-2.7-3.3-3.4">
<animate  accumulate="none" additive="replace" attributeName="fill" begin="0s" calcMode="linear" dur="1s" fill="remove" repeatCount="indefinite" restart="always" values="#333;#eee;#333;#333">
		</animate>
</path>
<path class="st0" d="M15.5,5.2c0.6,1.9,0.7,3.7,0,5.5l-1-0.4c0.5-1.4,0.5-3.3,0-4.8">
<animate  accumulate="none" additive="replace" attributeName="fill" begin="0.125s" calcMode="linear" dur="1s" fill="remove" repeatCount="indefinite" restart="always" values="#333;#eee;#333;#333">
		</animate>
</path>
<path class="st0" d="M15.2,11.4c-0.9,1.8-2.1,3.1-3.9,3.9l-0.5-1c1.3-0.6,2.7-2,3.3-3.4">
<animate  accumulate="none" additive="replace" attributeName="fill" begin="0.250s" calcMode="linear" dur="1s" fill="remove" repeatCount="indefinite" restart="always" values="#333;#eee;#333;#333">
		</animate>
</path>
<path class="st0" d="M10.7,15.5c-1.9,0.6-3.6,0.7-5.5,0l0.4-1.1c1.4,0.5,3.3,0.5,4.7,0">
<animate  accumulate="none" additive="replace" attributeName="fill" begin="0.375s" calcMode="linear" dur="1s" fill="remove" repeatCount="indefinite" restart="always" values="#333;#eee;#333;#333">
		</animate>
</path>
<path class="st0" d="M4.7,15.3c-1.8-0.9-3.1-2.1-3.9-3.9l1-0.5c0.6,1.3,2,2.7,3.3,3.4">
<animate  accumulate="none" additive="replace" attributeName="fill" begin="0.500s" calcMode="linear" dur="1s" fill="remove" repeatCount="indefinite" restart="always" values="#333;#eee;#333;#333">
		</animate>
</path>
<path class="st0" d="M0.5,10.8c-0.6-1.9-0.7-3.7,0-5.5l1.1,0.4c-0.5,1.4-0.5,3.3,0,4.8">
<animate  accumulate="none" additive="replace" attributeName="fill" begin="0.625s" calcMode="linear" dur="1s" fill="remove" repeatCount="indefinite" restart="always" values="#333;#eee;#333;#333">
		</animate>
</path>
<path class="st0" d="M0.7,4.7c0.9-1.8,2.1-3.1,3.9-3.9l0.5,1c-1.3,0.6-2.7,2-3.3,3.4">
<animate  accumulate="none" additive="replace" attributeName="fill" begin="0.750s" calcMode="linear" dur="1s" fill="remove" repeatCount="indefinite" restart="always" values="#333;#eee;#333;#333">
		</animate>
</path>
<path class="st0" d="M5.3,0.5c1.9-0.6,3.6-0.7,5.5,0l-0.4,1.1C9,1.1,7.1,1.1,5.7,1.6">
<animate  accumulate="none" additive="replace" attributeName="fill" begin="0.875s" calcMode="linear" dur="1s" fill="remove" repeatCount="indefinite" restart="always" values="#333;#eee;#333;#333">
		</animate>
</path>
</svg>
.elfinder {
  .elfinder-contextmenu * {
    font: normal normal normal 16px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;
  }

  .elfinder-contextmenu {
    display: block;
    border: 1px solid #b6b6b6;
    padding: 0;
    box-shadow: 0 0 3px rgba(0,0,0,.15);
  }

  /* item */
  .elfinder-contextmenu .elfinder-contextmenu-item {
    padding: 5px 30px 5px 30px;
    box-sizing: border-box;
    height: 24px;
  }

  /* item hovered */
  .elfinder-contextmenu .elfinder-contextmenu-item:hover {
    background-color: #EFF0EF;
  }

  /* icons */
  .elfinder-contextmenu .elfinder-contextmenu-icon {
    top: 0;
    left: 0;
    margin: 0;
    background-color: #D7D8D7;
    opacity: 0.70; /* Safari, Opera and Mozilla */
    filter: alpha(opacity=70); /* IE */
    height: 100%;
    line-height: 24px;
    width: 24px;
    text-align: center;
  }

  /* separator */
  .elfinder-contextmenu .elfinder-contextmenu-separator {
    border: none;
    background-color: #D3D3D3;
    height: 1px;
    filter: alpha(opacity=70); /* IE */
    opacity: 0.70; /* Safari, Opera and Mozilla */
  }
}
/* main dialog styles */
.elfinder-dialog {
  padding: 0;
  background: #eaeaea;
  border: 1px solid #b2b2b2;
  border-bottom-color: #999;
  border-radius: 3px;
  box-shadow: 0 0 3px rgba(0, 0, 0, .15);
}

/* reset the margin */
.elfinder-dialog .ui-dialog-content,
.elfinder-dialog .ui-dialog-content .ui-tabs {
  padding: 0;
  margin: 0;
  border: 0;
}

/* titlebar */
.elfinder-dialog .ui-dialog-titlebar {
  font-weight: bold;
  font-size: 13px;
  cursor: move;
  position: relative;

  color: #474747;
  text-shadow: 0 1px 0 rgba(255,255,255,.75);

  border-bottom: 1px solid #999;
  padding: 6px 10px;

  border-radius: 2px 2px 0 0;
  box-shadow: 0 1px 0 #fff inset;

  background: #cfd1cf;
  background-image: linear-gradient(to bottom, #f5f5f5, #cfd1cf);
  filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#f5f5f5', endColorstr='#cfd1cf');
}

/* icons */
.elfinder-dialog-icon {
  background: none;
  font-size: 18px;
  height: 20px;
  width: 20px;
  overflow: hidden;
  display: block;
  text-align: center;
  line-height: 20px;
  position: relative;
  margin: 0 20px 0 0;
  float: left;
}

.elfinder-dialog-icon:before {
  font-family: FontAwesome;
  background: none;
  display: block;
  text-align: center;
  cursor: pointer;
}

.elfinder-dialog-icon-error:before { content: '\f06a'; }
.elfinder-dialog-icon-confirm:before { content: '\f059'; }

/* tabs navigation backdrop */
.elfinder-dialog .ui-tabs-nav {
  height: 24px;
  background: #eaeaea;
  border: 0;
  border-bottom: 1px solid #999;
  border-radius: 0;
}

/* regular tab */
.elfinder-dialog .ui-tabs .ui-tabs-nav li a {
  display: block;
  padding: 3px;
  border: none;
  outline: none;
}

.elfinder-dialog .ui-tabs-nav .ui-state-default {
  height: 16px;
  padding: 3px;
  margin-right: 3px;
  display: inline-block;
  cursor: pointer;
  line-height: 16px;
  outline: none;
  color: #595959;
  border: 1px solid #bfbfbf;

  border-radius: 3px 3px 0 0;

  background: #d4d4d4;
  background-image: linear-gradient(to bottom, #fafafa, #ededed);
  filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#fafafa', endColorstr='#ededed');
}

/* selected tab */
.elfinder-dialog .ui-tabs-nav .ui-tabs-selected {
  background: #fff;
  color: #383838;
  border-bottom-color: #fff;
  cursor: default;
  filter: none;
  padding-bottom: 4px !important;
}

/* active tab */
.elfinder-dialog .ui-tabs-nav li:active {
  background: #ededed;
  background: linear-gradient(to bottom, #ededed 0%,#ffffff 100%);
  filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ededed', endColorstr='#ffffff',GradientType=0 );
}

/* info dialog */
.elfinder-dialog .elfinder-cwd-icon {
  background-image: none !important;
  overflow: hidden;
  height: 52px;
  width: 52px;
  font-size: 48px;
  line-height: 52px;
  margin: 6px;
}

/* file upload dialog */
.elfinder-dialog .elfinder-upload-dropbox,
.elfinder-dialog .elfinder-upload-dialog-or,
.elfinder-dialog .ui-button.ui-button-text-only {
  margin: 6px;
  text-align: center;
}

/* file editing dialog */
.elfinder-dialog .elfinder-file-edit {
  box-sizing: border-box;
  width: 100%;
  height: 100%;
  border: 0;
  padding: 5px;
}

/* error dialog */
.elfinder-dialog-error .ui-dialog-content,
.elfinder-dialog-confirm .ui-dialog-content {
  white-space: normal;
  padding: 5px;
}

/* disable resizing on textarea */
.elfinder-dialog textarea {
  resize: none;
}

/* footer */
.elfinder-dialog .ui-dialog-buttonpane {
  text-align: right;
  position: relative;
  border: none;
  outline: 1px solid #bfbfbf;
  box-shadow: 0 1px 0 #fff inset;
  border-radius: 0 0 2px 2px;
  background: #cfd1cf;
  background-image: linear-gradient(to bottom, #ebebeb, #cfd1cf);
  filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#ebebeb', endColorstr='#cfd1cf');
}

/* buttons */
.elfinder-dialog .ui-dialog-buttonset {
  margin-right: 8px;
}

.elfinder-dialog .ui-button {
  display: inline-block;
  *display: inline;
  *zoom: 1;

  padding: 4px 0;
  margin: 0 0 4px 4px !important;

  text-align: center;
  color: #333;
  vertical-align: middle;
  cursor: pointer;

  border: 1px solid #b6b6b6;
  border-bottom-color: #999;
  border-radius: 3px;
  box-shadow: 0 1px 0 rgba(255,255,255,.5), 0 0 2px rgba(255,255,255,.15) inset, 0 1px 0 rgba(255,255,255,.15) inset;

  background: #e4e4e4;
  background-image: linear-gradient(to bottom, #ffffff, #e4e4e4);
  filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#ffffff', endColorstr='#e4e4e4');
}

.elfinder-dialog .ui-button:hover {
  border-color: #9e9e9e;

  background: #ccc;
  background-image: linear-gradient(to bottom, #f2f2f2, #ccc);
  filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#f2f2f2', endColorstr='#cccccc');
}

.elfinder-dialog .ui-button:active {
  border-color: #969696;
  outline: none;
  box-shadow: 0 0 6px rgba(0,0,0,.4) inset;
}
/* default settings */
.elfinder-cwd-icon {
  background-image: none !important;
  overflow: hidden;
}
.elfinder-cwd-icon:before {
  font-family: FontAwesome;
  background: none;
  display: block;
  text-align: center;
}

/* generic files */
.elfinder-cwd-icon-application:before { content: '\f016'; }

/* directories */
.elfinder-cwd-icon-directory:before { content: '\f07b'; }
.elfinder-droppable-active .elfinder-cwd-icon-directory:before { content: '\f07c'; }

/* empty files */
.elfinder-cwd-icon-x-empty:before,
.elfinder-cwd-icon-inode:before { content: '\f1c9'; }

/* rich text */
.elfinder-cwd-icon-text:before,
.elfinder-cwd-icon-rtf:before,
.elfinder-cwd-icon-rtfd:before { content: '\f0f6'; }

/* pdfs */
.elfinder-cwd-icon-pdf:before { content: '\f1c1'; }

/* html/web documents */
.elfinder-cwd-icon-html:before { content: '\f0ac'; }

/* word */
.elfinder-cwd-icon-vnd-ms-word:before { content: '\f1c2'; }

/* powerpoint */
.elfinder-cwd-icon-vnd-ms-powerpoint:before { content: '\f1c4'; }

/* excel */
.elfinder-cwd-icon-ms-excel:before,
.elfinder-cwd-icon-vnd-ms-excel:before,
.elfinder-cwd-icon-vnd-ms-excel-addin-macroEnabled-12:before,
.elfinder-cwd-icon-vnd-ms-excel-sheet-binary-macroEnabled-12:before,
.elfinder-cwd-icon-vnd-ms-excel-sheet-macroEnabled-12:before,
.elfinder-cwd-icon-vnd-ms-excel-template-macroEnabled-12:before { content: '\f1c3'; }

/* images */
.elfinder-cwd-icon-image:before,
.elfinder-cwd-icon-vnd-adobe-photoshop:before,
.elfinder-cwd-icon-postscript:before { content: '\f1c5'; }

/* audio */
.elfinder-cwd-icon-audio:before { content: '\f1c7'; }

/* video */
.elfinder-cwd-icon-video:before,
.elfinder-cwd-icon-flash-video:before { content: '\f1c8'; }

/* archives */
.elfinder-cwd-icon-zip:before,
.elfinder-cwd-icon-x-zip:before,
.elfinder-cwd-icon-x-xz:before,
.elfinder-cwd-icon-x-7z-compressed:before,
.elfinder-cwd-icon-x-gzip:before,
.elfinder-cwd-icon-x-tar:before,
.elfinder-cwd-icon-x-bzip:before,
.elfinder-cwd-icon-x-bzip2:before,
.elfinder-cwd-icon-x-rar:before { content: '\f1c6'; }

/* code/script files */
.elfinder-cwd-icon-javascript:before,
.elfinder-cwd-icon-x-javascript:before,
.elfinder-cwd-icon-x-perl:before,
.elfinder-cwd-icon-x-python:before,
.elfinder-cwd-icon-x-ruby:before,
.elfinder-cwd-icon-x-sh:before,
.elfinder-cwd-icon-x-shellscript:before,
.elfinder-cwd-icon-x-c:before,
.elfinder-cwd-icon-x-csrc:before,
.elfinder-cwd-icon-x-chdr:before,
.elfinder-cwd-icon-x-c--:before,
.elfinder-cwd-icon-x-c--src:before,
.elfinder-cwd-icon-x-c--hdr:before,
.elfinder-cwd-icon-x-java:before,
.elfinder-cwd-icon-x-java-source:before,
.elfinder-cwd-icon-x-php:before,
.elfinder-cwd-icon-xml:before { content: '\f1c9'; }

/* unknown file types */
.elfinder-cwd-icon-unknown:before { content: '\f016'; }
/* main */
.elfinder {
  display: block;
  border: 1px solid #b6b6b6;
  padding: 0;
  box-shadow: 0 0 3px rgba(0,0,0,.15);
  height: 100%;
  border-radius: 0;
}


.elfinder * {
  border-collapse: collapse;
  font: normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;
  color: #000;
  text-align: left;
  cursor: auto;
}

/* resizer */
.elfinder .ui-icon-gripsmall-diagonal-se,
.elfinder-dialog .ui-icon-gripsmall-diagonal-se {
  background-image: none;
  bottom: 3px;
  right: 3px;
  width: 0;
  height: 0;
  overflow: hidden;
  width: 0;
  height: 0;
  overflow: hidden;
  border-width: 10px 10px 0 0;
  border-color: transparent #666 transparent transparent;
  border-style: dashed solid dashed dashed;
  font-size: 0;
  vertical-align: bottom;
  margin-top: 6px;
  margin-bottom: 2px;
  box-shadow: 0 1px 0 rgba(255,255,255,.3);
  cursor: se-resize;
}

/* dragging */
.elfinder-drag-helper * { font-size: 42px; }
.elfinder-drag-num { font-size: 12px; }
/* arrow */
.elfinder .elfinder-navbar-arrow {
  background-image: none !important;
  overflow: hidden;
  font-size: 14px;
  line-height: 16px;
  width: 20px;
  text-align: center;
}
.elfinder .elfinder-navbar-arrow:before {
  font-family: FontAwesome;
  height: 16px;
  width: 16px;
  content: '\f0da';
  background: none;
  display: block;
  text-align: center;
  cursor: pointer;
}

/* arrow open */
.elfinder .elfinder-navbar-expanded .elfinder-navbar-arrow:before {
  content: '\f0d7';
}

.elfinder .elfinder-navbar-icon,
.elfinder-lock,
.elfinder-perms,
.elfinder-symlink {
  background-image: none !important;
  overflow: hidden;
  height: 16px;
  width: 16px;
  font-size: 14px;
  line-height: 16px;
  margin-left: 3px;
}

.elfinder .elfinder-navbar-icon:before,
.elfinder-lock:before,
.elfinder-perms:before,
.elfinder-symlink:before {
  font-family: FontAwesome;
  background: none;
  display: block;
  text-align: center;
  cursor: pointer;
  font-size: smaller;
}

.elfinder-lock:before,
.elfinder-perms:before,
.elfinder-symlink:before {
  color:grey;
  opacity: 0.9;
}
/* read-only */
.elfinder-ro .elfinder-perms:before {
  content: '\f023';
}

/* not available */
.elfinder-na .elfinder-perms:before {
  content: '\f05e';
}

/* write-only available */
.elfinder-wo .elfinder-perms:before {
  content: '\f01a';
}

/* home */
.elfinder .elfinder-navbar-root > .elfinder-navbar-icon:before,
.elfinder .elfinder-navbar-root.elfinder-navbar-expanded > .elfinder-navbar-icon:before {
  content: '\f015';
}

/* directory */
.elfinder .elfinder-navbar-icon:before {
  content: '\f07b';
}

/* directory open */
.elfinder .elfinder-navbar-expanded > .elfinder-navbar-icon:before {
  content: '\f07c';
}

/* directories */

/* resizable handle */
.elfinder .ui-resizable-handle.ui-resizable-e {
  cursor: e-resize;
}
/* prevents 2nd-level children from being displayed in the navbar */
.elfinder .elfinder-navbar-subtree .elfinder-navbar-subtree * {
  /*display: none !important; */
}
.elfinder .elfinder-navbar {
  background: #fff;
}

/* directory */
.elfinder .elfinder-navbar-dir {
  padding: 3px 3px 3px 38px; /* push the text away from the icon */
  margin: 0 0 3px 0;
  display: block;
  overflow: hidden;
  cursor: pointer;
}

/* active directory */
.elfinder .elfinder-navbar-dir.ui-state-active {
  border: 1px solid #a6a6a6;
  border-bottom-color: #979797;
  color: #000; /* fix for 2.x */
  border-radius: 3px;
  box-shadow: 0 1px 0 rgba(255,255,255,.5), 0 0 2px rgba(255,255,255,.15) inset, 0 1px 0 rgba(255,255,255,.15) inset;
  background: #e4e4e4;
  background-image: linear-gradient(to bottom, #ffffff, #e4e4e4);
  filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#ffffff', endColorstr='#e4e4e4');
  }

.elfinder .elfinder-navbar-dir:hover {
  border: 1px solid #a6a6a6;
  border-bottom-color: #979797;
  border-radius: 3px;
  box-shadow: 0 1px 0 rgba(255,255,255,.5), 0 0 2px rgba(255,255,255,.15) inset, 0 1px 0 rgba(255,255,255,.15) inset;
  background: #e4e4e4;
  background-image: linear-gradient(to bottom, #ffffff, #e4e4e4);
  filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#ffffff', endColorstr='#e4e4e4');
}
/* status bar */
.elfinder .elfinder-statusbar {
  padding: 6px 8px 2px;
  position: relative;

  border-top: 1px solid #bfbfbf;

  box-shadow: 0 1px 0 #fff inset;
  border-radius: 0;

  background: #cfd1cf;
  background-image: linear-gradient(to bottom, #ebebeb, #cfd1cf);
  filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#ebebeb', endColorstr='#cfd1cf');
}

.elfinder .elfinder-stat-size {
}

/* breadcrumbs */
.elfinder .elfinder-path {
  max-width: none;
  font-size: 0; /* hide the text "/" divider */
  float: left;
  margin: 0 6px 5px 0;
  border: 1px solid #a6a6a6;
  border-bottom-color: #979797;
  border-radius: 3px;
  box-shadow: 0 1px 0 rgba(255,255,255,.5), 0 0 2px rgba(255,255,255,.15) inset, 0 1px 0 rgba(255,255,255,.15) inset;
  background: #e4e4e4;
  background-image: linear-gradient(to bottom, #ffffff, #e4e4e4);
  filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#ffffff', endColorstr='#e4e4e4');
}

/* style each element of the trail */
.elfinder .elfinder-path a {
  font-size: 12px;
  cursor: pointer;
  display: block;
  float: left;
  padding: 5px;
}

/* css divider */
.elfinder .elfinder-path a:not(:first-child) {
  border-left: 1px dotted #a6a6a6;
}

/* hovering */
.elfinder .elfinder-path a:hover,
.elfinder .elfinder-path a:hover:focus,
.elfinder .elfinder-path a:hover:active {
  box-shadow: 0 0 1px rgba(0,0,0,.3) inset;
  background: #ccc;
  background-image: linear-gradient(to bottom, #f2f2f2, #ccc);
  filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#f2f2f2', endColorstr='#cccccc');
}

.elfinder .elfinder-statusbar .elfinder-stat-selected {
  float: right;
  font-size: 12px;
  padding: 5px;
  margin: 0 0 5px 6px;

  padding: 5px;
  text-align: right;
}

/* size information */
.elfinder .elfinder-statusbar .elfinder-stat-size {
  font-size: 12px;
  padding: 5px;
  margin: 0 0 5px 6px;
}
/**
 * Moono CKEditor like theme for elFinder
 * Required jquery ui "smoothness" theme and FontAwesome for icons
 * Style rules copied and edited from Moono CKEditor source
 * @author lokothodida
 **/
/* FontAwesome Icons */
@import url('//maxcdn.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.min.css');
/* Main features of the whole UI */
/* main */
.elfinder {
  display: block;
  border: 1px solid #b6b6b6;
  padding: 0;
  box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
  height: 100%;
  border-radius: 0;
}
.elfinder * {
  border-collapse: collapse;
  font: normal normal normal 12px Arial, Helvetica, Tahoma, Verdana, Sans-Serif;
  color: #000;
  text-align: left;
  cursor: auto;
}
/* resizer */
.elfinder .ui-icon-gripsmall-diagonal-se,
.elfinder-dialog .ui-icon-gripsmall-diagonal-se {
  background-image: none;
  bottom: 3px;
  right: 3px;
  width: 0;
  height: 0;
  overflow: hidden;
  border-width: 10px 10px 0 0;
  border-color: transparent #666 transparent transparent;
  border-style: dashed solid dashed dashed;
  font-size: 0;
  vertical-align: bottom;
  margin-top: 6px;
  margin-bottom: 2px;
  box-shadow: 0 1px 0 rgba(255, 255, 255, 0.3);
  cursor: se-resize;
}
/* dragging */
.elfinder-drag-helper * {
  font-size: 42px;
}
.elfinder-drag-num {
  font-size: 12px;
}
/* File Icons */
/* default settings */
.elfinder-cwd-icon {
  background-image: none !important;
  overflow: hidden;
}
.elfinder-cwd-icon:before {
  font-family: FontAwesome;
  background: none;
  display: block;
  text-align: center;
}
/* generic files */
.elfinder-cwd-icon-application:before {
  content: '\f016';
}
/* directories */
.elfinder-cwd-icon-directory:before {
  content: '\f07b';
}
.elfinder-droppable-active .elfinder-cwd-icon-directory:before {
  content: '\f07c';
}
/* empty files */
.elfinder-cwd-icon-x-empty:before,
.elfinder-cwd-icon-inode:before {
  content: '\f1c9';
}
/* rich text */
.elfinder-cwd-icon-text:before,
.elfinder-cwd-icon-rtf:before,
.elfinder-cwd-icon-rtfd:before {
  content: '\f0f6';
}
/* pdfs */
.elfinder-cwd-icon-pdf:before {
  content: '\f1c1';
}
/* html/web documents */
.elfinder-cwd-icon-html:before {
  content: '\f0ac';
}
/* word */
.elfinder-cwd-icon-vnd-ms-word:before {
  content: '\f1c2';
}
/* powerpoint */
.elfinder-cwd-icon-vnd-ms-powerpoint:before {
  content: '\f1c4';
}
/* excel */
.elfinder-cwd-icon-ms-excel:before,
.elfinder-cwd-icon-vnd-ms-excel:before,
.elfinder-cwd-icon-vnd-ms-excel-addin-macroEnabled-12:before,
.elfinder-cwd-icon-vnd-ms-excel-sheet-binary-macroEnabled-12:before,
.elfinder-cwd-icon-vnd-ms-excel-sheet-macroEnabled-12:before,
.elfinder-cwd-icon-vnd-ms-excel-template-macroEnabled-12:before {
  content: '\f1c3';
}
/* images */
.elfinder-cwd-icon-image:before,
.elfinder-cwd-icon-vnd-adobe-photoshop:before,
.elfinder-cwd-icon-postscript:before {
  content: '\f1c5';
}
/* audio */
.elfinder-cwd-icon-audio:before {
  content: '\f1c7';
}
/* video */
.elfinder-cwd-icon-video:before,
.elfinder-cwd-icon-flash-video:before {
  content: '\f1c8';
}
/* archives */
.elfinder-cwd-icon-zip:before,
.elfinder-cwd-icon-x-zip:before,
.elfinder-cwd-icon-x-xz:before,
.elfinder-cwd-icon-x-7z-compressed:before,
.elfinder-cwd-icon-x-gzip:before,
.elfinder-cwd-icon-x-tar:before,
.elfinder-cwd-icon-x-bzip:before,
.elfinder-cwd-icon-x-bzip2:before,
.elfinder-cwd-icon-x-rar:before {
  content: '\f1c6';
}
/* code/script files */
.elfinder-cwd-icon-javascript:before,
.elfinder-cwd-icon-x-javascript:before,
.elfinder-cwd-icon-x-perl:before,
.elfinder-cwd-icon-x-python:before,
.elfinder-cwd-icon-x-ruby:before,
.elfinder-cwd-icon-x-sh:before,
.elfinder-cwd-icon-x-shellscript:before,
.elfinder-cwd-icon-x-c:before,
.elfinder-cwd-icon-x-csrc:before,
.elfinder-cwd-icon-x-chdr:before,
.elfinder-cwd-icon-x-c--:before,
.elfinder-cwd-icon-x-c--src:before,
.elfinder-cwd-icon-x-c--hdr:before,
.elfinder-cwd-icon-x-java:before,
.elfinder-cwd-icon-x-java-source:before,
.elfinder-cwd-icon-x-php:before,
.elfinder-cwd-icon-xml:before {
  content: '\f1c9';
}
/* unknown file types */
.elfinder-cwd-icon-unknown:before {
  content: '\f016';
}
/* Toolbar  */
/* toolbar */
.elfinder .elfinder-toolbar {
  /*border: 1px solid #b2b2b2;*/
  border-bottom: 1px solid #b6b6b6;
  padding: 6px 8px 2px;
  /* Allow breaking toolbars when in a narrow editor. (#9947) */
  white-space: normal;
  box-shadow: 0 1px 0 #fff inset;
  background: #cfd1cf;
  background-image: linear-gradient(to bottom, #f5f5f5, #cfd1cf);
  filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#f5f5f5', endColorstr='#cfd1cf');
}
/* toolbar buttons */
.elfinder .elfinder-buttonset {
  float: left;
  margin: 0 6px 5px 0;
  border: 1px solid #a6a6a6;
  border-bottom-color: #979797;
  border-radius: 3px;
  box-shadow: 0 1px 0 rgba(255, 255, 255, 0.5), 0 0 2px rgba(255, 255, 255, 0.15) inset, 0 1px 0 rgba(255, 255, 255, 0.15) inset;
  background: #e4e4e4;
  background-image: linear-gradient(to bottom, #ffffff, #e4e4e4);
  filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#ffffff', endColorstr='#e4e4e4');
}
/* toolbar buttons */
.elfinder .elfinder-buttonset .elfinder-button {
  display: inline-block;
  height: 18px;
  padding: 4px 6px;
  outline: none;
  cursor: default;
  float: left;
  border: none;
  border-radius: 0;
  background: none;
}
/* hovered buttons */
.elfinder .elfinder-buttonset .elfinder-button:hover,
.elfinder .elfinder-buttonset .elfinder-button:focus,
.elfinder .elfinder-buttonset .elfinder-button:active {
  box-shadow: 0 0 1px rgba(0, 0, 0, 0.3) inset;
  background: #ccc;
  background-image: linear-gradient(to bottom, #f2f2f2, #ccc);
  filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#f2f2f2', endColorstr='#cccccc');
}
/* disabled buttons */
.elfinder .elfinder-buttonset .elfinder-button.ui-state-disabled {
  opacity: 0.3;
}
/* disabled buttons */
/* don't show any separators in the toolbar buttonset */
.elfinder .elfinder-buttonset .elfinder-toolbar-button-separator {
  display: none;
}
/* searchbar */
.elfinder-toolbar .elfinder-button-search {
  margin: 0 0 5px 5px;
  height: 28px;
  width: 200px;
  box-sizing: border-box;
}
/* searchbar menu (v2.1) */
.elfinder-toolbar .elfinder-button-search .elfinder-button-menu {
  padding: 4px 0 0 4px;
}
/* searchbar menu items */
.elfinder-toolbar .elfinder-button-search .elfinder-button-menu .ui-button-text {
  cursor: pointer;
}
/* searchbar menu unselected items */
.elfinder-toolbar .elfinder-button-search .elfinder-button-menu .ui-state-default {
  background-image: none;
  background: #eaeaea;
}
/* searchbar menu hovered items */
.elfinder-toolbar .elfinder-button-search .elfinder-button-menu .ui-state-hover {
  background-image: none;
  background: #d0ebf4;
  border: 1px solid #509ece !important;
}
/* searchbar menu hovered items text */
.elfinder-toolbar .elfinder-button-search .elfinder-button-menu .ui-button-text:hover {
  color: #509ece;
}
/* at the time of speaking, v2.1 has a second, non-functional search bar, so
   we'll hide it - this does mean that the CTRL-F shortcut will not work in v2.1
   though */
.elfinder-toolbar .elfinder-button-search:nth-child(2) {
  display: none !important;
}
.elfinder-toolbar .elfinder-button-search input {
  height: 26px;
  width: 200px;
  padding-left: 24px;
  box-sizing: border-box;
}
.elfinder-toolbar .elfinder-button-search .ui-icon {
  background-image: none !important;
  overflow: hidden;
  height: 16px;
  width: 16px;
  font-size: 14px;
  line-height: 16px;
  text-align: center;
}
.elfinder-toolbar .elfinder-button-search .ui-icon:before {
  font-family: FontAwesome;
  background: none;
  display: block;
  text-align: center;
  text-indent: 0;
}
/* search icon */
.elfinder-toolbar .elfinder-button-search .ui-icon-search {
  margin-left: 5px;
  margin-right: 5px;
  overflow: hidden;
  display: block;
}
.elfinder-toolbar .elfinder-button-search .ui-icon-search:before {
  content: '\f002';
}
/* close search results */
.elfinder-toolbar .elfinder-button-search .ui-icon-close:before {
  content: '\f00d';
}
/* Toolbar Icons */
/* toolbar */
.elfinder-button-icon,
.elfinder-menu-item-sort-dir {
  background: none;
  font-size: 14px;
  height: 16px;
  width: 16px;
  overflow: hidden;
  display: block;
  text-align: center;
  line-height: 16px;
}
.elfinder-button-icon:before,
.elfinder-button-icon:after,
.elfinder-menu-item-sort-dir:before {
  font-family: FontAwesome;
  background: none;
  display: block;
  text-align: center;
  cursor: pointer;
}
.elfinder-button-icon-back:before {
  content: '\f137';
}
.elfinder-button-icon-forward:before {
  content: '\f138';
}
.elfinder-button-icon-netmount:before {
  content: '\f233';
}
.elfinder-button-icon-reload:before {
  content: '\f021';
}
.elfinder-button-icon-home:before {
  content: '\f015';
}
.elfinder-button-icon-up:before {
  content: '\f148';
}
.elfinder-button-icon-mkdir:before {
  content: '\f114';
}
.elfinder-button-icon-mkfile:before {
  content: '\f016';
}
.elfinder-button-icon-upload:before {
  content: '\f093';
}
.elfinder-button-icon-open:before {
  content: '\f115';
}
.elfinder-button-icon-download:before {
  content: '\f019';
}
.elfinder-button-icon-getfile:before {
  content: '\f0a6';
}
.elfinder-button-icon-info:before {
  content: '\f05a';
}
.elfinder-button-icon-quicklook:before {
  content: '\f06e';
}
.elfinder-button-icon-copy:before {
  content: '\f0c5';
}
.elfinder-button-icon-cut:before {
  content: '\f0c4';
}
.elfinder-button-icon-paste:before {
  content: '\f0ea';
}
.elfinder-button-icon-view:before {
  content: '\f00a';
}
.elfinder-button-icon-view-list:before {
  content: '\f0ca';
}
.elfinder-button-icon-help:before {
  content: '\f059';
}
.elfinder-button-icon-help:before {
  content: '\f059';
}
.elfinder-button-icon-duplicate:before {
  content: '\f24d';
}
.elfinder-button-icon-rm:before {
  content: '\f014';
}
.elfinder-button-icon-edit:before {
  content: '\f044';
}
.elfinder-button-icon-rename:before {
  content: '\f246';
}
.elfinder-button-icon-archive:before {
  content: '\f1c6';
}
.elfinder-button-icon-archive:after {
  /* '+' icon overlaying archive */
  position: absolute;
  content: '\f067';
  bottom: 2px;
  right: 5px;
  font-size: 10px;
}
.elfinder-button-icon-resize:before {
  content: '\f065';
}
.elfinder-button-icon-extract:before {
  content: '\f1c6';
}
.elfinder-button-icon-sort:before {
  content: '\f0dc';
}
/* menus */
.elfinder-button-menu {
  background-color: #fff;
  border: 1px solid #b6b6b6;
  border-bottom-color: #999;
  border-radius: 3px;
  box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
  margin: 0;
  padding: 0;
}
.elfinder-button-menu-item {
  margin: 3px;
  cursor: pointer;
}
.elfinder-button-menu-item-selected,
.elfinder-button-menu-item.ui-state-hover {
  background-image: none;
  border-color: #dedede;
  background-color: #f2f2f2;
  box-shadow: 0 0 2px rgba(0, 0, 0, 0.1) inset;
}
.elfinder-button-menu-item-selected.elfinder-menu-item-sort-asc .elfinder-menu-item-sort-dir:before {
  content: '\f0de';
}
.elfinder-button-menu-item-selected.elfinder-menu-item-sort-desc .elfinder-menu-item-sort-dir:before {
  content: '\f0dd';
}
/* Navbar */
.elfinder .elfinder-navbar {
  background: #fff;
}
/* directory */
.elfinder .elfinder-navbar-dir {
  padding: 3px 3px 3px 38px;
  /* push the text away from the icon */
  margin: 0 0 3px 0;
  display: block;
  overflow: hidden;
  cursor: pointer;
}
/* active directory */
.elfinder .elfinder-navbar-dir.ui-state-active {
  border: 1px solid #a6a6a6;
  border-bottom-color: #979797;
  color: #000;
  /* fix for 2.x */
  border-radius: 3px;
  box-shadow: 0 1px 0 rgba(255, 255, 255, 0.5), 0 0 2px rgba(255, 255, 255, 0.15) inset, 0 1px 0 rgba(255, 255, 255, 0.15) inset;
  background: #e4e4e4;
  background-image: linear-gradient(to bottom, #ffffff, #e4e4e4);
  filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#ffffff', endColorstr='#e4e4e4');
}
.elfinder .elfinder-navbar-dir:hover {
  border: 1px solid #a6a6a6;
  border-bottom-color: #979797;
  border-radius: 3px;
  box-shadow: 0 1px 0 rgba(255, 255, 255, 0.5), 0 0 2px rgba(255, 255, 255, 0.15) inset, 0 1px 0 rgba(255, 255, 255, 0.15) inset;
  background: #e4e4e4;
  background-image: linear-gradient(to bottom, #ffffff, #e4e4e4);
  filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#ffffff', endColorstr='#e4e4e4');
}
/* Navbar Restrictions */
/* prevents 2nd-level children from being displayed in the navbar */
.elfinder .elfinder-navbar-subtree .elfinder-navbar-subtree * {
  /*display: none !important; */
}
/* Navbar Icons */
/* arrow */
.elfinder .elfinder-navbar-arrow {
  background-image: none !important;
  overflow: hidden;
  font-size: 14px;
  line-height: 16px;
  width: 20px;
  text-align: center;
}
.elfinder .elfinder-navbar-arrow:before {
  font-family: FontAwesome;
  height: 16px;
  width: 16px;
  content: '\f0da';
  background: none;
  display: block;
  text-align: center;
  cursor: pointer;
}
/* arrow open */
.elfinder .elfinder-navbar-expanded .elfinder-navbar-arrow:before {
  content: '\f0d7';
}
.elfinder .elfinder-navbar-icon {
  background-image: none !important;
  overflow: hidden;
  height: 16px;
  width: 16px;
  font-size: 14px;
  line-height: 16px;
  margin-left: 3px;
}
.elfinder .elfinder-navbar-icon:before {
  font-family: FontAwesome;
  background: none;
  display: block;
  text-align: center;
  cursor: pointer;
}
/* home */
.elfinder .elfinder-navbar-root > .elfinder-navbar-icon:before,
.elfinder .elfinder-navbar-root.elfinder-navbar-expanded > .elfinder-navbar-icon:before {
  content: '\f015';
}
/* directory */
.elfinder .elfinder-navbar-icon:before {
  content: '\f07b';
}
/* directory open */
.elfinder .elfinder-navbar-expanded > .elfinder-navbar-icon:before {
  content: '\f07c';
}
/* directories */
/* resizable handle */
.elfinder .ui-resizable-handle.ui-resizable-e {
  cursor: e-resize;
}
/* Thumbnail View */
/* main file wrapper */
.elfinder .elfinder-cwd-view-icons .elfinder-cwd-file {
  padding: 4px;
  cursor: pointer;
}
/* reset inner styles */
.elfinder .elfinder-cwd-view-icons .elfinder-cwd-file *,
.elfinder .elfinder-cwd-view-icons .elfinder-cwd-file .elfinder-cwd-filename,
.elfinder .elfinder-cwd-view-icons .elfinder-cwd-file .elfinder-cwd-file-wrapper {
  background: none;
  cursor: pointer;
  color: #000;
}
/* icon */
.elfinder .elfinder-cwd-wrapper .elfinder-cwd-view-icons .elfinder-cwd-icon {
  overflow: hidden;
  height: 52px;
  width: 52px;
  font-size: 48px;
  line-height: 52px;
}
/* filename */
.elfinder .elfinder-cwd-view-icons .elfinder-cwd-file .elfinder-cwd-filename {
  font-size: 12px;
}
/* hover state */
.elfinder .elfinder-cwd-view-icons .elfinder-cwd-file:hover,
.elfinder .elfinder-cwd-view-icons .elfinder-cwd-file:active,
.elfinder .elfinder-cwd-view-icons .elfinder-cwd-file.ui-selected {
  background: none;
  /* reset background */
  border-color: #dedede;
  background-color: #f2f2f2;
  box-shadow: 0 0 2px rgba(0, 0, 0, 0.1) inset;
  border-radius: 6px;
}
.elfinder .elfinder-cwd-view-icons .elfinder-cwd-file:hover *,
.elfinder .elfinder-cwd-view-icons .elfinder-cwd-file:active *,
.elfinder .elfinder-cwd-view-icons .elfinder-cwd-file.ui-selected * {
  color: #666666;
}
/* active and hovered */
.elfinder .elfinder-cwd-view-icons .elfinder-cwd-file.ui-selected:hover {
  background-color: #f4f4f4;
}
.elfinder .elfinder-cwd-view-icons .elfinder-cwd-file.ui-selected:hover * {
  color: #b7b7b7;
}
/* List View */
/* headings */
.elfinder .elfinder-cwd table thead tr {
  background: none;
  border: none;
}
.elfinder .elfinder-cwd table thead tr td,
.elfinder .elfinder-cwd table thead tr td.ui-state-active {
  font-weight: bold;
  font-size: 13px;
  position: relative;
  color: #474747;
  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.75);
  border-bottom: 2px solid #b2b2b2;
  padding: 6px 18px 6px 10px;
  border-radius: 2px 2px 0 0;
  box-shadow: 0 1px 0 #fff inset;
  background: #cfd1cf;
  background-image: linear-gradient(to bottom, #f5f5f5, #cfd1cf);
  filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#f5f5f5', endColorstr='#cfd1cf');
}
/* sorter icon */
.elfinder .elfinder-cwd-wrapper-list tr td .ui-icon,
.elfinder .elfinder-cwd-wrapper-list tr.ui-state-default td .ui-icon {
  text-indent: 0;
  background-image: none !important;
  overflow: hidden;
  font-size: 14px;
  line-height: 16px;
  width: 20px;
  text-align: center;
  position: absolute;
  top: 0;
  right: 0;
  height: 100%;
  line-height: 28px;
  margin: auto 0 auto auto;
}
.elfinder .elfinder-cwd-wrapper-list tr td .ui-icon:before {
  font-family: FontAwesome;
  height: 16px;
  height: 100%;
  background: none;
  display: block;
  text-align: center;
}
/* down */
.elfinder .elfinder-cwd-wrapper-list tr.ui-state-default td .ui-icon-triangle-1-s:before {
  content: '\f0d7';
}
/* up */
.elfinder .elfinder-cwd-wrapper-list tr.ui-state-default td .ui-icon-triangle-1-n:before {
  content: '\f0de';
}
/* files */
.elfinder .elfinder-cwd table {
  padding: 0;
  /* fix for v2.1 */
}
.elfinder .elfinder-cwd table tr * {
  cursor: default;
}
.elfinder .elfinder-cwd table tbody tr:nth-child(odd) {
  background-color: #eaeaea;
}
/* fix for font sizes on v2.x */
.elfinder .elfinder-cwd-view-list td {
  font-size: 12px;
}
.elfinder .elfinder-cwd-view-list td div {
  padding-top: 3px;
  padding-bottom: 3px;
}
/* hover state */
.elfinder .elfinder-cwd-wrapper-list .elfinder-cwd-file:hover,
.elfinder .elfinder-cwd-wrapper-list .elfinder-cwd-file.ui-state-hover {
  /* fix for v2.x */
  background-image: none;
  background: #d0ebf4;
}
/* fix text hover color */
.elfinder .elfinder-cwd-wrapper-list .elfinder-cwd-file:hover *,
.elfinder .elfinder-cwd-wrapper-list .elfinder-cwd-file.ui-state-hover:hover *,
.elfinder .elfinder-cwd-wrapper-list .elfinder-cwd-file.ui-state-hover * {
  /* fix for v2.x */
  color: #509ece;
}
/* selected files */
.elfinder .elfinder-cwd table tbody tr.ui-selected td {
  background-color: #D2D2D7;
  background-image: none;
}
/* selected files text color */
.elfinder .elfinder-cwd-wrapper-list .elfinder-cwd-file.ui-selected:hover * {
  color: #fff;
}
/* icon size settings */
.elfinder .elfinder-cwd-wrapper-list .elfinder-cwd-icon {
  height: 16px;
  width: 16px;
  font-size: 14px;
  line-height: 16px;
}
/* View Icons */
.elfinder .elfinder-cwd-view-icons .elfinder-cwd-file .elfinder-cwd-filename {
  border-radius: 3px;
}
.elfinder .elfinder-cwd-wrapper-list .elfinder-cwd-icon:before {
  cursor: pointer;
}
/* Modal Dialogs */
/* main dialog styles */
.elfinder-dialog {
  padding: 0;
  background: #eaeaea;
  border: 1px solid #b2b2b2;
  border-bottom-color: #999;
  border-radius: 3px;
  box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
}
/* reset the margin */
.elfinder-dialog .ui-dialog-content,
.elfinder-dialog .ui-dialog-content .ui-tabs {
  padding: 0;
  margin: 0;
  border: 0;
}
/* titlebar */
.elfinder-dialog .ui-dialog-titlebar {
  font-weight: bold;
  font-size: 13px;
  cursor: move;
  position: relative;
  color: #474747;
  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.75);
  border-bottom: 1px solid #999;
  padding: 6px 10px;
  border-radius: 2px 2px 0 0;
  box-shadow: 0 1px 0 #fff inset;
  background: #cfd1cf;
  background-image: linear-gradient(to bottom, #f5f5f5, #cfd1cf);
  filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#f5f5f5', endColorstr='#cfd1cf');
}
/* icons */
.elfinder-dialog-icon {
  background: none;
  font-size: 18px;
  height: 20px;
  width: 20px;
  overflow: hidden;
  display: block;
  text-align: center;
  line-height: 20px;
  position: relative;
  margin: 0 20px 0 0;
  float: left;
}
.elfinder-dialog-icon:before {
  font-family: FontAwesome;
  background: none;
  display: block;
  text-align: center;
  cursor: pointer;
}
.elfinder-dialog-icon-error:before {
  content: '\f06a';
}
.elfinder-dialog-icon-confirm:before {
  content: '\f059';
}
/* tabs navigation backdrop */
.elfinder-dialog .ui-tabs-nav {
  height: 24px;
  background: #eaeaea;
  border: 0;
  border-bottom: 1px solid #999;
  border-radius: 0;
}
/* regular tab */
.elfinder-dialog .ui-tabs .ui-tabs-nav li a {
  display: block;
  padding: 3px;
  border: none;
  outline: none;
}
.elfinder-dialog .ui-tabs-nav .ui-state-default {
  height: 16px;
  padding: 3px;
  margin-right: 3px;
  display: inline-block;
  cursor: pointer;
  line-height: 16px;
  outline: none;
  color: #595959;
  border: 1px solid #bfbfbf;
  border-radius: 3px 3px 0 0;
  background: #d4d4d4;
  background-image: linear-gradient(to bottom, #fafafa, #ededed);
  filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#fafafa', endColorstr='#ededed');
}
/* selected tab */
.elfinder-dialog .ui-tabs-nav .ui-tabs-selected {
  background: #fff;
  color: #383838;
  border-bottom-color: #fff;
  cursor: default;
  filter: none;
  padding-bottom: 4px !important;
}
/* active tab */
.elfinder-dialog .ui-tabs-nav li:active {
  background: #ededed;
  background: linear-gradient(to bottom, #ededed 0%, #ffffff 100%);
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed', endColorstr='#ffffff', GradientType=0);
}
/* info dialog */
.elfinder-dialog .elfinder-cwd-icon {
  background-image: none !important;
  overflow: hidden;
  height: 52px;
  width: 52px;
  font-size: 48px;
  line-height: 52px;
  margin: 6px;
}
/* file upload dialog */
.elfinder-dialog .elfinder-upload-dropbox,
.elfinder-dialog .elfinder-upload-dialog-or,
.elfinder-dialog .ui-button.ui-button-text-only {
  margin: 6px;
  text-align: center;
}
/* file editing dialog */
.elfinder-dialog .elfinder-file-edit {
  box-sizing: border-box;
  width: 100%;
  height: 100%;
  border: 0;
  padding: 5px;
}
/* error dialog */
.elfinder-dialog-error .ui-dialog-content,
.elfinder-dialog-confirm .ui-dialog-content {
  white-space: normal;
  padding: 5px;
}
/* disable resizing on textarea */
.elfinder-dialog textarea {
  resize: none;
}
/* footer */
.elfinder-dialog .ui-dialog-buttonpane {
  text-align: right;
  position: relative;
  border: none;
  outline: 1px solid #bfbfbf;
  box-shadow: 0 1px 0 #fff inset;
  border-radius: 0 0 2px 2px;
  background: #cfd1cf;
  background-image: linear-gradient(to bottom, #ebebeb, #cfd1cf);
  filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#ebebeb', endColorstr='#cfd1cf');
}
/* buttons */
.elfinder-dialog .ui-dialog-buttonset {
  margin-right: 8px;
}
.elfinder-dialog .ui-button {
  display: inline-block;
  *display: inline;
  *zoom: 1;
  padding: 4px 0;
  margin: 0 0 4px 4px !important;
  text-align: center;
  color: #333;
  vertical-align: middle;
  cursor: pointer;
  border: 1px solid #b6b6b6;
  border-bottom-color: #999;
  border-radius: 3px;
  box-shadow: 0 1px 0 rgba(255, 255, 255, 0.5), 0 0 2px rgba(255, 255, 255, 0.15) inset, 0 1px 0 rgba(255, 255, 255, 0.15) inset;
  background: #e4e4e4;
  background-image: linear-gradient(to bottom, #ffffff, #e4e4e4);
  filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#ffffff', endColorstr='#e4e4e4');
}
.elfinder-dialog .ui-button:hover {
  border-color: #9e9e9e;
  background: #ccc;
  background-image: linear-gradient(to bottom, #f2f2f2, #ccc);
  filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#f2f2f2', endColorstr='#cccccc');
}
.elfinder-dialog .ui-button:active {
  border-color: #969696;
  outline: none;
  box-shadow: 0 0 6px rgba(0, 0, 0, 0.4) inset;
}
/* Context menu */
.elfinder-contextmenu * {
  font: normal normal normal 16px Arial, Helvetica, Tahoma, Verdana, Sans-Serif;
}
.elfinder-contextmenu {
  display: block;
  border: 1px solid #b6b6b6;
  padding: 0;
  box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
}
/* item */
.elfinder-contextmenu .elfinder-contextmenu-item {
  padding: 5px 30px 5px 30px;
  box-sizing: border-box;
  height: 24px;
}
/* item hovered */
.elfinder-contextmenu .elfinder-contextmenu-item:hover {
  background-color: #EFF0EF;
}
/* icons */
.elfinder-contextmenu .elfinder-contextmenu-icon {
  top: 0;
  left: 0;
  margin: 0;
  background-color: #D7D8D7;
  opacity: 0.70;
  /* Safari, Opera and Mozilla */
  filter: alpha(opacity=70);
  /* IE */
  height: 100%;
  line-height: 24px;
  width: 24px;
  text-align: center;
}
/* separator */
.elfinder-contextmenu .elfinder-contextmenu-separator {
  border: none;
  background-color: #D3D3D3;
  height: 1px;
  filter: alpha(opacity=70);
  /* IE */
  opacity: 0.70;
  /* Safari, Opera and Mozilla */
}
/* Status Bar */
/* status bar */
.elfinder .elfinder-statusbar {
  padding: 6px 8px 2px;
  position: relative;
  border-top: 1px solid #bfbfbf;
  box-shadow: 0 1px 0 #fff inset;
  border-radius: 0;
  background: #cfd1cf;
  background-image: linear-gradient(to bottom, #ebebeb, #cfd1cf);
  filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#ebebeb', endColorstr='#cfd1cf');
}
/* breadcrumbs */
.elfinder .elfinder-path {
  max-width: none;
  font-size: 0;
  /* hide the text "/" divider */
  float: left;
  margin: 0 6px 5px 0;
  border: 1px solid #a6a6a6;
  border-bottom-color: #979797;
  border-radius: 3px;
  box-shadow: 0 1px 0 rgba(255, 255, 255, 0.5), 0 0 2px rgba(255, 255, 255, 0.15) inset, 0 1px 0 rgba(255, 255, 255, 0.15) inset;
  background: #e4e4e4;
  background-image: linear-gradient(to bottom, #ffffff, #e4e4e4);
  filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#ffffff', endColorstr='#e4e4e4');
}
/* style each element of the trail */
.elfinder .elfinder-path a {
  font-size: 12px;
  cursor: pointer;
  display: block;
  float: left;
  padding: 5px;
}
/* css divider */
.elfinder .elfinder-path a:not(:first-child) {
  border-left: 1px dotted #a6a6a6;
}
/* hovering */
.elfinder .elfinder-path a:hover,
.elfinder .elfinder-path a:hover:focus,
.elfinder .elfinder-path a:hover:active {
  box-shadow: 0 0 1px rgba(0, 0, 0, 0.3) inset;
  background: #ccc;
  background-image: linear-gradient(to bottom, #f2f2f2, #ccc);
  filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#f2f2f2', endColorstr='#cccccc');
}
.elfinder .elfinder-statusbar .elfinder-stat-selected {
  float: right;
  font-size: 12px;
  margin: 0 0 5px 6px;
  padding: 5px;
  text-align: right;
}
/* size information */
.elfinder .elfinder-statusbar .elfinder-stat-size {
  font-size: 12px;
  padding: 5px;
  margin: 0 0 5px 6px;
}
/**
 * Moono CKEditor like theme for elFinder
 * Required jquery ui "smoothness" theme and FontAwesome for icons
 * Style rules copied and edited from Moono CKEditor source
 * @author lokothodida
 **/

/* FontAwesome Icons */
@import url('//maxcdn.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.min.css');

/* Main features of the whole UI */
@import url('mainui.less');

/* File Icons */
@import url('file-icons.less');

/* Toolbar  */
@import url('toolbar.less');

/* Toolbar Icons */
@import url('toolbar-icons.less');

/* Navbar */
@import url('navbar.less');

/* Navbar Restrictions */
@import url('navbar-restrict.less');

/* Navbar Icons */
@import url('navbar-icons.less');

/* Thumbnail View */
@import url('view.less');

/* List View */
@import url('view-list.less');

/* View Icons */
@import url('view-icons.less');

/* Modal Dialogs */
@import url('dialog.less');

/* Context menu */
@import url('contextmenu.less');

/* Status Bar */
@import url('statusbar.less');
/* toolbar */
.elfinder-button-icon,
.elfinder-menu-item-sort-dir {
  background: none;
  font-size: 14px;
  height: 16px;
  width: 16px;
  overflow: hidden;
  display: block;
  text-align: center;
  line-height: 16px;
}
.elfinder-button-icon:before,
.elfinder-button-icon:after,
.elfinder-menu-item-sort-dir:before {
  font-family: FontAwesome;
  background: none;
  display: block;
  text-align: center;
  cursor: pointer;
}
.elfinder-button-icon-back:before { content: '\f137'; }
.elfinder-button-icon-forward:before { content: '\f138'; }
.elfinder-button-icon-netmount:before { content: '\f233'; }
.elfinder-button-icon-reload:before { content: '\f021'; }
.elfinder-button-icon-home:before { content: '\f015'; }
.elfinder-button-icon-up:before { content: '\f148'; }
.elfinder-button-icon-mkdir:before { content: '\f114'; }
.elfinder-button-icon-mkfile:before { content: '\f016'; }
.elfinder-button-icon-upload:before { content: '\f093'; }
.elfinder-button-icon-open:before { content: '\f115'; }
.elfinder-button-icon-download:before { content: '\f019'; }
.elfinder-button-icon-getfile:before { content: '\f0a6'; }
.elfinder-button-icon-info:before { content: '\f05a'; }
.elfinder-button-icon-quicklook:before { content: '\f06e'; }
.elfinder-button-icon-copy:before { content: '\f0c5'; }
.elfinder-button-icon-cut:before { content: '\f0c4'; }
.elfinder-button-icon-paste:before { content: '\f0ea'; }
.elfinder-button-icon-view:before { content: '\f00a'; }
.elfinder-button-icon-view-list:before { content: '\f0ca'; }
.elfinder-button-icon-help:before { content: '\f059'; }
.elfinder-button-icon-help:before { content: '\f059'; }
.elfinder-button-icon-duplicate:before { content: '\f24d';}
.elfinder-button-icon-rm:before { content: '\f014'; }
.elfinder-button-icon-edit:before { content: '\f044'; }
.elfinder-button-icon-rename:before { content: '\f246'; }
.elfinder-button-icon-archive:before { content: '\f1c6'; }
.elfinder-button-icon-archive:after { /* '+' icon overlaying archive */
  position: absolute;
  content: '\f067';
  bottom: 2px;
  right: 5px;
  font-size: 10px;
}
.elfinder-button-icon-resize:before { content: '\f065'; }
.elfinder-button-icon-extract:before { content: '\f1c6'; }
.elfinder-button-icon-sort:before { content: '\f0dc'; }
.elfinder-button-icon-fullscreen:before { content: '\f0b2'; }

/* menus */
.elfinder-button-menu {
  background-color: #fff;
  border: 1px solid #b6b6b6;
  border-bottom-color: #999;
  border-radius: 3px;
  box-shadow: 0 0 3px rgba(0,0,0,.15);
  margin: 0;
  padding: 0;
}
.elfinder-button-menu-item {
  margin: 3px;
  cursor: pointer;
}
.elfinder-button-menu-item-selected,
.elfinder-button-menu-item.ui-state-hover {
  background-image: none;
  border-color: #dedede;
  background-color: #f2f2f2;
  box-shadow: 0 0 2px rgba(0,0,0,.1) inset;
}
.elfinder-button-menu-item-selected.elfinder-menu-item-sort-asc .elfinder-menu-item-sort-dir:before { content: '\f0de'; }
.elfinder-button-menu-item-selected.elfinder-menu-item-sort-desc .elfinder-menu-item-sort-dir:before { content: '\f0dd'; }
/* toolbar */
.elfinder .elfinder-toolbar {
  /*border: 1px solid #b2b2b2;*/
  border-bottom: 1px solid #b6b6b6;
  padding: 6px 8px 2px;

  /* Allow breaking toolbars when in a narrow editor. (#9947) */
  white-space: normal;

  box-shadow: 0 1px 0 #fff inset;

  background: #cfd1cf;
  background-image: linear-gradient(to bottom, #f5f5f5, #cfd1cf);
  filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#f5f5f5', endColorstr='#cfd1cf');
}

/* toolbar buttons */
.elfinder .elfinder-buttonset {
  float: left;
  margin: 0 6px 5px 0;
  border: 1px solid #a6a6a6;
  border-bottom-color: #979797;

  border-radius: 3px;

  box-shadow: 0 1px 0 rgba(255,255,255,.5), 0 0 2px rgba(255,255,255,.15) inset, 0 1px 0 rgba(255,255,255,.15) inset;

  background: #e4e4e4;
  background-image: linear-gradient(to bottom, #ffffff, #e4e4e4);
  filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#ffffff', endColorstr='#e4e4e4');
}

/* toolbar buttons */
.elfinder .elfinder-buttonset .elfinder-button {
  display: inline-block;
  height: 18px;
  padding: 4px 6px;
  outline: none;
  cursor: default;
  float: left;
  border: none;
  border-radius: 0;
  background: none;
}

/* hovered buttons */
.elfinder .elfinder-buttonset .elfinder-button:hover,
.elfinder .elfinder-buttonset .elfinder-button:focus,
.elfinder .elfinder-buttonset .elfinder-button:active {
  box-shadow: 0 0 1px rgba(0,0,0,.3) inset;
  background: #ccc;
  background-image: linear-gradient(to bottom, #f2f2f2, #ccc);
  filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#f2f2f2', endColorstr='#cccccc');
}

/* disabled buttons */
.elfinder .elfinder-buttonset .elfinder-button.ui-state-disabled {
  opacity: 0.3;
}

/* disabled buttons */

/* don't show any separators in the toolbar buttonset */
.elfinder .elfinder-buttonset .elfinder-toolbar-button-separator {
  display: none;
}

/* searchbar */
.elfinder-toolbar .elfinder-button-search {
  margin: 0 0 5px 5px;
  height: 28px;
  width: 200px;
  box-sizing: border-box;
}

/* searchbar menu (v2.1) */
.elfinder-toolbar .elfinder-button-search .elfinder-button-menu {
  padding: 4px 0 0 4px;
}

/* searchbar menu items */
.elfinder-toolbar .elfinder-button-search .elfinder-button-menu .ui-button-text {
  cursor: pointer;
}

/* searchbar menu unselected items */
.elfinder-toolbar .elfinder-button-search .elfinder-button-menu .ui-state-default {
  background-image: none;
  background: #eaeaea;
}

/* searchbar menu hovered items */
.elfinder-toolbar .elfinder-button-search .elfinder-button-menu .ui-state-hover {
  background-image: none;
  background: #d0ebf4;
  border: 1px solid #509ece !important;
}

/* searchbar menu hovered items text */
.elfinder-toolbar .elfinder-button-search .elfinder-button-menu .ui-button-text:hover {
  color: #509ece;
}

/* at the time of speaking, v2.1 has a second, non-functional search bar, so
   we'll hide it - this does mean that the CTRL-F shortcut will not work in v2.1
   though */
.elfinder-toolbar .elfinder-button-search:nth-child(2) {
  display: none !important;
}

.elfinder-toolbar .elfinder-button-search input {
  height: 26px;
  width: 200px;
  padding-left: 24px;
  box-sizing: border-box;
}

.elfinder-toolbar .elfinder-button-search .ui-icon {
  background-image: none !important;
  overflow: hidden;
  height: 16px;
  width: 16px;
  font-size: 14px;
  line-height: 16px;
  text-align: center;
}

.elfinder-toolbar .elfinder-button-search .ui-icon:before {
  font-family: FontAwesome;
  background: none;
  display: block;
  text-align: center;
  text-indent: 0;
}

/* search icon */
.elfinder-toolbar .elfinder-button-search .ui-icon-search {
  margin-left: 5px;
  margin-right: 5px;
  overflow: hidden;
  display: block;
}

.elfinder-toolbar .elfinder-button-search .ui-icon-search:before {
  content: '\f002';
}

/* close search results */
.elfinder-toolbar .elfinder-button-search .ui-icon-close:before {
  content: '\f00d';
}
.elfinder .elfinder-cwd-view-icons .elfinder-cwd-file .elfinder-cwd-filename {
  border-radius: 3px;
}

.elfinder .elfinder-cwd-wrapper-list .elfinder-cwd-icon:before {
  cursor: pointer;
}
/* headings */
.elfinder .elfinder-cwd table thead tr {
  background: none;
  border: none;
}
.elfinder .elfinder-cwd table thead tr td,
.elfinder .elfinder-cwd table thead tr td.ui-state-active {
  font-weight: bold;
  font-size: 13px;
  position: relative;

  color: #474747;
  text-shadow: 0 1px 0 rgba(255,255,255,.75);

  border-bottom: 2px solid #b2b2b2;
  padding: 6px 18px 6px 10px;

  border-radius: 2px 2px 0 0;
  box-shadow: 0 1px 0 #fff inset;

  background: #cfd1cf;
  background-image: linear-gradient(to bottom, #f5f5f5, #cfd1cf);
  filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#f5f5f5', endColorstr='#cfd1cf');
}

/* sorter icon */
.elfinder .elfinder-cwd-wrapper-list tr td .ui-icon,
.elfinder .elfinder-cwd-wrapper-list tr.ui-state-default td .ui-icon {
  text-indent: 0;
  background-image: none !important;
  overflow: hidden;
  font-size: 14px;
  line-height: 16px;
  width: 20px;
  text-align: center;
  position: absolute;
  top: 0;
  right: 0;
  height: 100%;
  line-height: 28px;
  margin: auto 0 auto auto;
}

.elfinder .elfinder-cwd-wrapper-list tr td .ui-icon:before {
  font-family: FontAwesome;
  height: 16px;
  height: 100%;
  background: none;
  display: block;
  text-align: center;
}

/* down */
.elfinder .elfinder-cwd-wrapper-list tr.ui-state-default td .ui-icon-triangle-1-s:before {
  content: '\f0d7';
}

/* up */
.elfinder .elfinder-cwd-wrapper-list tr.ui-state-default td .ui-icon-triangle-1-n:before {
  content: '\f0de';
}

/* files */
.elfinder .elfinder-cwd table {
  padding: 0; /* fix for v2.1 */
}

.elfinder .elfinder-cwd table tr * {
  cursor: default;
}

.elfinder .elfinder-cwd table tbody tr:nth-child(odd) { background-color:#eaeaea; }
.elfinder .elfinder-cwd table tbody tr { }

/* fix for font sizes on v2.x */
.elfinder .elfinder-cwd-view-list td { font-size: 12px; }
.elfinder .elfinder-cwd-view-list td div {
  padding-top: 3px;
  padding-bottom: 3px;
}

/* hover state */
.elfinder .elfinder-cwd-wrapper-list .elfinder-cwd-file:hover,
.elfinder .elfinder-cwd-wrapper-list .elfinder-cwd-file.ui-state-hover { /* fix for v2.x */
  background-image: none;
  background: #d0ebf4;
}

/* fix text hover color */
.elfinder .elfinder-cwd-wrapper-list .elfinder-cwd-file:hover *,
.elfinder .elfinder-cwd-wrapper-list .elfinder-cwd-file.ui-state-hover:hover *,
.elfinder .elfinder-cwd-wrapper-list .elfinder-cwd-file.ui-state-hover * { /* fix for v2.x */
  color: #509ece;
}

/* selected files */
.elfinder .elfinder-cwd table tbody tr.ui-selected td {
  background-color: #D2D2D7;
  background-image: none;
}

/* selected files text color */
.elfinder .elfinder-cwd-wrapper-list .elfinder-cwd-file.ui-selected:hover * { color: #fff; }

/* icon size settings */
.elfinder .elfinder-cwd-wrapper-list .elfinder-cwd-icon {
  height: 16px;
  width: 16px;
  font-size: 14px;
  line-height: 16px;
}

.elfinder .elfinder-cwd-wrapper-list .elfinder-cwd-icon:before {

}
/* main file wrapper */
.elfinder .elfinder-cwd-view-icons .elfinder-cwd-file {
  padding: 4px;
  cursor: pointer;
}

/* reset inner styles */
.elfinder .elfinder-cwd-view-icons .elfinder-cwd-file *,
.elfinder .elfinder-cwd-view-icons .elfinder-cwd-file .elfinder-cwd-filename,
.elfinder .elfinder-cwd-view-icons .elfinder-cwd-file .elfinder-cwd-file-wrapper {
  background: none;
  cursor: pointer;
  color: #000;
}

/* icon */
.elfinder .elfinder-cwd-wrapper .elfinder-cwd-view-icons .elfinder-cwd-icon {
  overflow: hidden;
  height: 52px;
  width: 52px;
  font-size: 48px;
  line-height: 52px;
}

/* filename */
.elfinder .elfinder-cwd-view-icons .elfinder-cwd-file .elfinder-cwd-filename {
  font-size: 12px;
}

/* hover state */
.elfinder .elfinder-cwd-view-icons .elfinder-cwd-file:hover,
.elfinder .elfinder-cwd-view-icons .elfinder-cwd-file:active,
.elfinder .elfinder-cwd-view-icons .elfinder-cwd-file.ui-selected {
  background: none; /* reset background */
  border-color: #dedede;
  background-color: #f2f2f2;
  box-shadow: 0 0 2px rgba(0,0,0,.1) inset;
  border-radius: 6px;
}

.elfinder .elfinder-cwd-view-icons .elfinder-cwd-file:hover *,
.elfinder .elfinder-cwd-view-icons .elfinder-cwd-file:active *,
.elfinder .elfinder-cwd-view-icons .elfinder-cwd-file.ui-selected * {
  color: #666666;
}

/* active and hovered */
.elfinder .elfinder-cwd-view-icons .elfinder-cwd-file.ui-selected:hover {
  background-color: #f4f4f4;
}

.elfinder .elfinder-cwd-view-icons .elfinder-cwd-file.ui-selected:hover * {
  color: #b7b7b7;
}
The MIT License (MIT)

Copyright (c) 2015 Lawrence Okoth-Odida

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

# Stylesheets
All CSS for your theme will be located here.

The `theme.css` file is the focal point for loading the styles. These could all have been in one file, but have been split up for the sake of more easily structuring and maintaining the codebase.

* **reset.css** : resets background and border of all elfinder elements so that you can skin from scratch without manually positioning the main elements yourself
* **main.css** : main UI elements (wrapper for the main elfinder div, global styles, etc..)
* **icons.css** : icons across the UI (e.g. file associations)
* **toolbar.css** : toolbar at the top of the elfinder container. Contains toolbar buttons and searchbar
* **navbar.css** : directory navigation on the left-hand panel
* **view-list.css** : defines the list view
* **view-thumbnail.css** : defines the thumbnail/tile view
* **contextmenu.css** : context menu shown when right-clicking on in the list/thumbnail view or navbar
* **dialog.css** : information dialogs/modal windows
* **statusbar.css** : footer; contains information about directory and currently selected files

Note that many of the styles have a large degree of selectivity. E.g:

```css
.elfinder .elfinder-navbar .elfinder-navbar-dir.ui-state-active:hover { /* */ }
```

This is to minimize the need for using `!important` flags to override the existing styles (particularly with respect to jQuery UI's CSS).

## Tips
* Use the `reset.css` style to reset the styles that you need to. Comment out selectors that you wish to remain untouched.
* If you need to reset a style outside of `reset.css`, the following normally suffices:

    ```css
      background: none;
      border: none;
    ```
* If you want to change the icons in a particular container, it is best to reset the icon's style from a general selector, then style each individual icon separately. For example:

    ```css
    /* All toolbar icons */
    .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon {
      /* reset the style and set  properties common to all toolbar icons */
    }

    /* mkfile toolbar icon */
    .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-mkfile {
      /* styles specific to the mkfile button (e.g. background-position) */
    }
    ```
* Some styles have their `text-indent` property set to `-9999px` to keep the text out of view. If after styling you can't see the text (and you need to), change the `text-indent` property
/* contextmenu.css */
/* **Note** that the context menu is NOT inside the main elfinder div */
/* Context menu wrapper */
.elfinder-contextmenu,
.elfinder-contextmenu-sub,
.elfinder-button-menu {
  font-size: 16px;
  font-family: 'Open Sans', sans-serif;
  background: #fff!important;
  border: 1px solid #b5b5b5!important;
  box-shadow: 0 0 5px #cdcdcd!important;
  border-radius: 0;
  padding: 3px 3px 0 3px;
}

/* Menu item */
.elfinder-contextmenu .elfinder-contextmenu-item,
.elfinder-button-menu .elfinder-button-menu-item {
  margin: 0 0 3px 0;
}

/* Hovered menu item */
.elfinder-contextmenu .elfinder-contextmenu-item:hover,
.elfinder-button-menu .elfinder-button-menu-item:hover  {
  background: #dedddc;
  color: #000;
}

/* Item icon */
.elfinder-contextmenu .elfinder-contextmenu-item .elfinder-contextmenu-icon {
  /* */
}

/* Separator */
.elfinder-contextmenu .elfinder-contextmenu-separator {
  background: #e2e3e4;
  height: 1px;
  margin: 1px;
}

.elfinder-contextmenu .elfinder-button-icon-open + span {
  font-weight: bold;
}
/* dialog.css */
/* Dialog wrapper */
.elfinder .elfinder-dialog {
  /* */
}

/* Dialog title */
.elfinder .elfinder-dialog .ui-dialog-titlebar {
  padding: 3px 0 3px 6px;
  height: 30px;
  box-sizing: border-box;
}

/* Close button */
.elfinder .elfinder-dialog .ui-dialog-titlebar-close {
  background: url('../images/close.png');
  right: 0;
  border-radius: 0;
  margin-top: -15px;
  webkit-transition: background 0.3s; /* Safari */
  transition: background-image 0.3s;
  height: 29px;
  width: 45px;
}

.elfinder .elfinder-dialog .ui-dialog-titlebar-close:hover {
  background: url('../images/close-hover.png');
}
.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-button.elfinder-titlebar-button-right {
  left: 1px;
  top: 12px;
}
/* Dialog content */
.elfinder .elfinder-dialog .ui-dialog-content {
  /* */
}

/* Tabs */
/* Tabs wrapper */
.elfinder .elfinder-dialog .ui-tabs-nav {
  /* */
}

/* Normal tab */
.elfinder .elfinder-dialog .ui-tabs-nav .ui-state-default {
  /* */
}

/* Current tab */
.elfinder .elfinder-dialog .ui-tabs-nav .ui-tabs-selected {
  /* */
}

/* Active tab */
.elfinder .elfinder-dialog .ui-tabs-nav li:active {
  /* */
 }
.elfinder .ui-state-active {
	background: #1979CA none repeat scroll 0 0;	
	/*background: #009688 none repeat scroll 0 0;	*/
}
/* Icons */
/* Dialog icon (e.g. for error messages) */
.elfinder .elfinder-dialog .elfinder-dialog-icon {
  /* */
}

/* Error icon */
.elfinder .elfinder-dialog .elfinder-dialog-icon-error {
  /* */
}

/* Confirmation icon */
.elfinder .elfinder-dialog .elfinder-dialog-icon-confirm {
  /* */
}

/* Footer */
.elfinder .elfinder-dialog .ui-dialog-buttonpane {
  /* */
}

/* Buttonset (wrapper) */
.elfinder .elfinder-dialog .ui-dialog-buttonpane .ui-dialog-buttonset {
  /* */
}

/* Button */
.elfinder .elfinder-dialog .ui-dialog-buttonpane .ui-dialog-buttonset .ui-button {
  /* */
}

/* Styling specific types of dialogs */
/* Error */
.elfinder .elfinder-dialog-error {
  /* */
}

/* Confirm */
.elfinder .elfinder-dialog-confirm {
  /* */
}

/* File editing */
.elfinder .elfinder-dialog .elfinder-file-edit {
  /* */
}

/* File information */
/* Title */
.elfinder .elfinder-dialog .elfinder-info-title {
  /* */
}

/* Table */
.elfinder .elfinder-dialog .elfinder-info-tb {
  /* */
}

/* File upload (including dropbox) */
.elfinder .elfinder-dialog .elfinder-upload-dropbox,
.elfinder .elfinder-dialog .elfinder-upload-dialog-or {
  /* */
}
/* icons.css */

/* These are shown thoughought the UI, not just in the list/thumbnail view */
/* General icon settings (in main view panel) */
.elfinder-cwd-icon {
  /* */
}

/* If you are using CSS sprites for your icons, set the background position
   in each of the below styles */
/* Directory */
.elfinder-cwd-icon-directory {
  background-color: transparent;
  background-image: url('../images/16px/directory.png') !important;
  background-position: center center;
  height: 16px;
  width: 16px;
}

/* Empty file */
.elfinder-cwd-icon-x-empty,
.elfinder-cwd-icon-inode {
  /* */
}

/* (Rich) Text */
.elfinder-cwd-icon-text,
.elfinder-cwd-icon-rtf,
.elfinder-cwd-icon-rtfd {
  /* */
}

/* PDF */
.elfinder-cwd-icon-pdf {
  /* */
}

/* Microsoft Word */
.elfinder-cwd-icon-vnd-ms-word {
  /* */
}

/* Microsoft PowerPoint */
.elfinder-cwd-icon-vnd-ms-powerpoint {
  /* */
}

/* Microsoft Excel */
.elfinder-cwd-icon-ms-excel,
.elfinder-cwd-icon-vnd-ms-excel,
.elfinder-cwd-icon-vnd-ms-excel-addin-macroEnabled-12,
.elfinder-cwd-icon-vnd-ms-excel-sheet-binary-macroEnabled-12,
.elfinder-cwd-icon-vnd-ms-excel-sheet-macroEnabled-12,
.elfinder-cwd-icon-vnd-ms-excel-template-macroEnabled-12 {
  /* */
}

/* Audio */
.elfinder-cwd-icon-audio {
  /* */
}

/* Video */
.elfinder-cwd-icon-video,
.elfinder-cwd-icon-flash-video {
  /* */
}

/* Archives */
.elfinder-cwd-icon-zip,
.elfinder-cwd-icon-x-zip,
.elfinder-cwd-icon-x-xz,
.elfinder-cwd-icon-x-7z-compressed,
.elfinder-cwd-icon-x-gzip,
.elfinder-cwd-icon-x-tar,
.elfinder-cwd-icon-x-bzip,
.elfinder-cwd-icon-x-bzip2,
.elfinder-cwd-icon-x-rar {
  /* */
}

/* Code/Scripts */
.elfinder-cwd-icon-javascript,
.elfinder-cwd-icon-x-javascript,
.elfinder-cwd-icon-x-perl,
.elfinder-cwd-icon-x-python,
.elfinder-cwd-icon-x-ruby,
.elfinder-cwd-icon-x-sh,
.elfinder-cwd-icon-x-shellscript,
.elfinder-cwd-icon-x-c,
.elfinder-cwd-icon-x-csrc,
.elfinder-cwd-icon-x-chdr,
.elfinder-cwd-icon-x-c--,
.elfinder-cwd-icon-x-c--src,
.elfinder-cwd-icon-x-c--hdr,
.elfinder-cwd-icon-x-java,
.elfinder-cwd-icon-x-java-source,
.elfinder-cwd-icon-x-php,
.elfinder-cwd-icon-xml {
  /* */
}
/* main.css */
/* Container div for elFinder */
.elfinder,
.elfinder .elfinder-dialog,
.elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-menu {
  background: #fff;
  border: 1px solid #69bcee;
  box-shadow: 0 0 5px #cdcdcd;
  border-radius: 0;
}

/* Override styles in child elements of elFinder div */
/* Use for consistently setting text sizes and overriding general jQuery UI styles */
.elfinder * {
  color: #000;
  font-family: 'Open Sans', sans-serif;
}

/* Resizer */
/* Used if elFinder is resizable and on dialogs */
.elfinder .ui-icon-gripsmall-diagonal-se,
.elfinder-dialog .ui-icon-gripsmall-diagonal-se {
  /* */
}
/* navbar.css */
/* Main wrapper for navbar */
.elfinder .elfinder-navbar {
  border-right: 1px solid #e5e5e5;
}

/* Directories */
.elfinder .elfinder-navbar .elfinder-navbar-dir {
  color: #000;
  border-radius: 0;
}

/* Hovered directory  */
.elfinder .elfinder-navbar .elfinder-navbar-dir:hover {
  background: #e5f3ff;
}

/* Current/active directory (cwd) */
.elfinder .elfinder-navbar .elfinder-navbar-dir.ui-state-active {
  background: #cce8ff;
  border: 1px solid #99d1ff;
}

/* Howvered cwd */
.elfinder .elfinder-navbar .elfinder-navbar-dir.ui-state-active:hover {
  /* */
}

/* Icons */
/* Arrow */
.elfinder .elfinder-navbar .elfinder-navbar-arrow {
  /* */
    background-image: url('../images/16px/arrow_right.png');
  background-position: center center;
  background-repeat: no-repeat;
}

/* Expanded directory arrow */
.elfinder .elfinder-navbar-expanded .elfinder-navbar-arrow {
  /* */
  background-image: url('../images/16px/arrow_down.png');
  background-position: center center;
  background-repeat: no-repeat;
}

/* All icons (directories) */
.elfinder .elfinder-navbar .elfinder-navbar-icon {
  background-color: transparent;
  background-image: url('../images/16px/directory.png') !important;
  background-position: center center;
  background-repeat: none;
  height: 16px;
  width: 16px;
}
/* Expanded directory */
.elfinder .elfinder-navbar-expanded.ui-state-active .elfinder-navbar-icon {
	  background-image: url('../images/16px/directory_opened.png') !important;
}
/* Root/volume */
.elfinder .elfinder-navbar-root > .elfinder-navbar-icon {
  /* */
}

/* Root/volume expanded */
.elfinder .elfinder-navbar-root.elfinder-navbar-expanded  > .elfinder-navbar-icon {
  /* */
}

/* Resizable handle */
.elfinder .elfinder-navbar .ui-resizable-handle.ui-resizable-e {
  /* */
}
/* reset.css */
/* Comment out/delete the reset rules where appropriate */

/* container */
.elfinder,

/* toolbar */
.elfinder .elfinder-toolbar,
.elfinder .elfinder-buttonset,
.elfinder .elfinder-button,
.elfinder .elfinder-toolbar-button-separator,
.elfinder .elfinder-toolbar input,

/* navbar */
.elfinder .elfinder-navbar,
.elfinder .elfinder-navbar *,

/* current working directory */
.elfinder .elfinder-cwd,
.elfinder .elfinder-cwd table tr td.ui-state-active,
.elfinder .elfinder-cwd table tr td.ui-state-hover,
.elfinder .elfinder-cwd table tr td.ui-state-selected,
.elfinder .elfinder-cwd table thead tr,
.elfinder .elfinder-cwd table tbody tr,
.elfinder .elfinder-cwd-file .ui-state-hover,
.elfinder .elfinder-cwd-file .elfinder-cwd-icon-directory,
.elfinder .elfinder-cwd-file .elfinder-cwd-filename,
.elfinder .elfinder-cwd-file .elfinder-cwd-filename.ui-state-hover,

/* general states */
.elfinder .ui-state-default,
.elfinder .ui-state-active,
.elfinder .ui-state-hover,
.elfinder .ui-selected,

/* ui-widgets (normally for dialogs) */
.elfinder .ui-widget,
.elfinder .ui-widget-header,
.elfinder .ui-widget-content,

/* icons */
.elfinder-button-icon,
.elfinder-navbar-icon,
.elfinder-cwd-icon-directory,
.elfinder .ui-icon,

/* statusbar */
.elfinder .elfinder-statusbar,
.elfinder .elfinder-statusbar *,

/* context menu (outside of elfinder div */
.elfinder-contextmenu,
.elfinder-contextmenu-sub,
.elfinder-contextmenu-item,
.elfinder-contextmenu-separator,
.elfinder-contextmenu .ui-state-hover {
  background: none;
  border: none;
}
/* statusbar.css */
/* Statusbar wrapper */
.elfinder .elfinder-statusbar {
  /* */
}

/* File size */
.elfinder .elfinder-statusbar .elfinder-stat-size {
  /* */
}

/* Current path (breadcrumb trail) */
.elfinder .elfinder-statusbar .elfinder-path {
  /* */
}

/* Breadcrumb in current path */
.elfinder .elfinder-statusbar .elfinder-path a {
  /* */
}

/* Name of selected file(s) */
.elfinder .elfinder-statusbar .elfinder-stat-selected {
  /* */
}

/* Size of current file(s) */
.elfinder .elfinder-statusbar .elfinder-stat-size {
  /* */
}
/**
 * elFinder Theme Template
 * @author lokothodida
 */

/* Reset */
@import url('reset.css');

/* Google Fonts */
@import url('//fonts.googleapis.com/css?family=Open+Sans:300');

/* Main features of the whole UI */
@import url('main.css');

/* Icons */
@import url('icons.css');

/* Toolbar (top panel) */
@import url('toolbar.css');

/* Navbar (left panel) */
@import url('navbar.css');

/* Views (List and Thumbnail) */
@import url('view-list.css');
@import url('view-thumbnail.css');

/* Context menu */
@import url('contextmenu.css');

/* (Modal) Dialogs */
@import url('dialog.css');

/* Status Bar */
@import url('statusbar.css');
/* toolbar.css */
/* Main toolbar wrapper */
.elfinder .elfinder-toolbar {
  /* */
}

/* Buttonset wrapper */
.elfinder .elfinder-toolbar .elfinder-buttonset {
  /* */
}
/* Buttonset wrapper for search field */
.elfinder .elfinder-button-search .elfinder-button-menu {
  background: #fff !important;
}
/* Buttons */
.elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button {
  border: 1px solid transparent;
  webkit-transition: background 0.3s, border 0.3s; /* Safari */
  transition: background 0.3s, border 0.3s;
}

/* Hovered buttons */
.elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button:hover {
  background: #cce8ff;
  border: 1px solid #99d1ff;
}

/* Hovered buttons in search field */
.elfinder .elfinder-button-search .elfinder-button-menu .ui-button:hover {
  background: #cce8ff;
  border: 0px solid #99d1ff;
}

/* Disabled buttons */
.elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button.ui-state-disabled {
  /* */
}

/* Buttonset separator */
.elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-toolbar-button-separator {
  /* */
}

/* Button icons */
.elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon {
  /* */
}

/* Searchbar */
.elfinder-toolbar .elfinder-button-search {
  /* */
  border: 1px solid #ccc;
  margin-right: 5px;
  border-radius: 0;
}

/* Searchbar icons (search and close) */
.elfinder-toolbar .elfinder-button-search .ui-icon {
  /* */
}

.elfinder-toolbar .elfinder-button-search .ui-icon-search {
  /* */
   background-image: url('../images/16px/search.png');
}


.elfinder-toolbar .elfinder-button-search .ui-icon-close {
  /* */
}

/* Commands */
  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon {
    background-color: transparent;
    background-position: center center;
    height: 16px;
    width: 16px;
  }

  /* Back */
  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-back {
    background-image: url('../images/16px/back.png');
  }

  /* Forward */
  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-forward {
    background-image: url('../images/16px/forward.png');
  }

  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-reload {
    background-image: url('../images/16px/reload.png');
  }

  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-netmount {
    background-image: url('../images/16px/netmount.png');
  }

  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-home {
    background-image: url('../images/16px/home.png');
  }

  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-up {
    background-image: url('../images/16px/up.png');
  }

  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-mkdir {
    background-image: url('../images/16px/directory.png');
  }

  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-mkfile {
    background-image: url('../images/16px/file.png');
  }

  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-upload {
    background-image: url('../images/16px/upload.png');
  }

  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-open {
    background-image: url('../images/16px/open.png');
  }

  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-download {
    background-image: url('../images/16px/download.png');
  }

  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-getfile {
    background-image: url('../images/16px/getfile.png');
  }

  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-info {
    background-image: url('../images/16px/info.png');
  }

  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-quicklook {
    background-image: url('../images/16px/preview.png');
  }

  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-copy {
    background-image: url('../images/16px/copy.png');
  }

  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-cut {
    background-image: url('../images/16px/cut.png');
  }

  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-paste {
    background-image: url('../images/16px/paste.png');
  }

  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-view {
    background-image: url('../images/16px/view.png');
  }

  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-view-list {
    background-image: url('../images/16px/view-list.png');
  }

  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-help {
    background-image: url('../images/16px/help.png');
  }


  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-duplicate {
    background-image: url('../images/16px/duplicate.png');
  }

  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-rm {
    background-image: url('../images/16px/rm.png');
  }

  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-edit {
    background-image: url('../images/16px/edit.png');
  }

  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-rename {
    background-image: url('../images/16px/rename.png');
  }

  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-archive {
    background-image: url('../images/16px/archive.png');
  }

  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-resize {
    background-image: url('../images/16px/resize.png');
  }

  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-extract {
    background-image: url('../images/16px/extract.png');
  }

  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-sort {
    background-image: url('../images/16px/sort.png');
  } 
  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-undo {
    background-image: url('../images/16px/undo.png');
  } 
  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-redo {
    background-image: url('../images/16px/redo.png');
  }  
  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-selectall {
    background-image: url('../images/16px/select_all.png');
  }  
  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-selectnone {
    background-image: url('../images/16px/deselect_all.png');
  }  
  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-selectinvert {
    background-image: url('../images/16px/invert_selection.png');
  }  
  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-empty {
    background-image: url('../images/16px/clear_folder.png');
  }

  /* Menus (e.g. for sorting) */
  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-menu {
    /* */
  }

  /* Menu items */
  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-menu-item {
    /* */
  }

  /* Selected items */
  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-menu-item-selected {
    /* */
  }

  /* Hovered items */
  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-menu-item.ui-state-hover {
    /* */
  }

  /* Menu item sorting ascending icon */
  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-menu-item-selected.elfinder-menu-item-sort-asc .elfinder-menu-item-sort-dir {
    /* */
  }

  /* Menu item sorting descending icon */
  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-menu-item-selected.elfinder-menu-item-sort-desc .elfinder-menu-item-sort-dir {
    /* */
  }
/* view-list.css */
/* Wrapper for list view */
.elfinder .elfinder-cwd-wrapper-list {
  /* */
}

/* List view table */
.elfinder .elfinder-cwd-wrapper-list table {
  /* */
}

/* Column headings */
.elfinder .elfinder-cwd-wrapper-list table thead tr td {
  color: #43536a;
}

.elfinder .elfinder-cwd-wrapper-list table thead tr td:not(:last-child) {
  border-right: 1px solid #e5e5e5;
}

/* Hovered column heading */
.elfinder .elfinder-cwd-wrapper-list table thead tr td.ui-state-hover,
.elfinder .elfinder-cwd-wrapper-list table thead tr td:hover {
  background: #d0dded;
}

/* Actively sorted column heading */
.elfinder .elfinder-cwd-wrapper-list table thead tr td.ui-state-active {
  border-right: 1px solid #e5e5e5;
}

/* Table heading icons (mainly the sorter) */
.elfinder .elfinder-cwd-wrapper-list table tr td .ui-icon {
  /* */
}

/* Table heading sorter up */
.elfinder .elfinder-cwd-wrapper-list table tr.ui-state-default td .ui-icon-triangle-1-n:before {
  /* */
}

/* Table heading sorter down */
.elfinder .elfinder-cwd-wrapper-list table tr.ui-state-default td .ui-icon-triangle-1-s:before {
  /* */
}

/* Files */
/* File */
.elfinder .elfinder-cwd-wrapper-list .elfinder-cwd-file td {
  border: 1px solid transparent;
}

.elfinder .elfinder-cwd-wrapper-list .elfinder-cwd-file td:not(:first-child) {
  color: #9d9d9d;
}

/* Filename */
.elfinder .elfinder-cwd-wrapper-list .elfinder-cwd-file .elfinder-cwd-filename {
  /* */
}

/* Hovered file */

.elfinder .elfinder-cwd-wrapper-list .elfinder-cwd-file:hover,
.elfinder .elfinder-cwd-wrapper-list .elfinder-cwd-file.ui-state-hover,          /* fix for 2.x */
.elfinder .elfinder-cwd-wrapper-list .elfinder-cwd-file.ui-state-hover:hover {   /* fix for 2.1 */
  background: #e5f3ff;
  border-color: #e5f3ff;
}

/* Selected file */
.elfinder .elfinder-cwd-wrapper-list .elfinder-cwd-file.ui-selected {
  background: #cce8ff;
}

.elfinder .elfinder-cwd-wrapper-list .elfinder-cwd-file.ui-selected td {
  border-top: 1px solid #99d1ff;
  border-bottom: 1px solid #99d1ff;
}

.elfinder .elfinder-cwd-wrapper-list .elfinder-cwd-file.ui-selected td:first-child {
  border-left: 1px solid #99d1ff;
}

.elfinder .elfinder-cwd-wrapper-list .elfinder-cwd-file.ui-selected td:last-child {
  border-right: 1px solid #99d1ff;
}

/* Icons */
.elfinder .elfinder-cwd-wrapper-list .elfinder-cwd-file .elfinder-cwd-icon {
  /* */
}
/* view-thumbnail.css */
/* Wrapper for thumbnail view */
.elfinder .elfinder-cwd-view-icons {
}

/* File wrapper */
.elfinder .elfinder-cwd-view-icons .elfinder-cwd-file {
  width: 80px;
  height: 80px;
  border: 1px solid transparent;
  border-radius: 0;
}

/* Hovered file */
.elfinder .elfinder-cwd-view-icons .elfinder-cwd-file.ui-state-hover {
  background: #e5f3ff;
}

/* Selected file */
.elfinder .elfinder-cwd-view-icons .elfinder-cwd-file.ui-selected {
  background: #cce8ff;
  border: 1px solid #99d1ff;
}

/* File icon */
.elfinder .elfinder-cwd-view-icons .elfinder-cwd-file .elfinder-cwd-icon {
}

.elfinder .elfinder-cwd-view-icons .elfinder-cwd-file .elfinder-cwd-icon-directory,
.elfinder .elfinder-dialog .elfinder-cwd-icon-directory {
  background-color: transparent;
  background-image: url('../images/48px/directory.png') !important;
  background-position: center center;
  height: 48px;
  width: 48px;
}

/* File name */
.elfinder .elfinder-cwd-view-icons .elfinder-cwd-file .elfinder-cwd-filename {
  color: #000 !important;
}
# Images
Store all images for your elFinder skin in this directory.

It is best to group similar images into one file and use the files as CSS spritesheets.
# Scripts
Any extra (funky) Javascript that you want to load along with your
theme should be located here. This could be:

* Special configuration for elFinder under your theme
* Extra JavaScript libraries that your theme depends on
* Javascript hacks to the elFinder markup after the file browser has loaded (not recommended)
﻿body {
    padding-top: 70px;
    padding-bottom: 20px;
}

/* Wrapping element */
/* Set some basic padding to keep content from hitting the edges */
.body-content {
    padding-left: 15px;
    padding-right: 15px;
}

/* Set widths on the form inputs since otherwise they're 100% wide */
input,
select,
textarea {
    max-width: 280px;
}

/* Carousel */
.carousel-caption p {
    font-size: 20px;
    line-height: 1.4;
}

/* Make .svg files in the carousel display properly in older browsers */
.carousel-inner .item img[src$=".svg"] {
    width: 100%;
}

/* Hide/rearrange for smaller screens */
@media screen and (max-width: 767px) {
    /* Hide captions */
    .carousel-caption {
        display: none
    }
}
body{padding-top:70px;padding-bottom:20px}.body-content{padding-left:15px;padding-right:15px}input,select,textarea{max-width:280px}.carousel-caption p{font-size:20px;line-height:1.4}.carousel-inner .item img[src$=".svg"]{width:100%}@media screen and (max-width:767px){.carousel-caption{display:none}}
﻿// Write your Javascript code.
﻿
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.30104.148
MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "elFinder.AspNet.Web", "elFinder.AspNet.Web\elFinder.AspNet.Web.csproj", "{E7EB177A-6ACB-4DF9-9084-6863C85701F8}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "elFinder.AspNet", "elFinder.AspNet\elFinder.AspNet.csproj", "{F7461AED-5E01-4FE0-AA1A-1C1241B4C96A}"
EndProject
Global
	GlobalSection(SolutionConfigurationPlatforms) = preSolution
		Debug|Any CPU = Debug|Any CPU
		Release|Any CPU = Release|Any CPU
	EndGlobalSection
	GlobalSection(ProjectConfigurationPlatforms) = postSolution
		{E7EB177A-6ACB-4DF9-9084-6863C85701F8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{E7EB177A-6ACB-4DF9-9084-6863C85701F8}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{E7EB177A-6ACB-4DF9-9084-6863C85701F8}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{E7EB177A-6ACB-4DF9-9084-6863C85701F8}.Release|Any CPU.Build.0 = Release|Any CPU
		{F7461AED-5E01-4FE0-AA1A-1C1241B4C96A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{F7461AED-5E01-4FE0-AA1A-1C1241B4C96A}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{F7461AED-5E01-4FE0-AA1A-1C1241B4C96A}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{F7461AED-5E01-4FE0-AA1A-1C1241B4C96A}.Release|Any CPU.Build.0 = Release|Any CPU
	EndGlobalSection
	GlobalSection(SolutionProperties) = preSolution
		HideSolutionNode = FALSE
	EndGlobalSection
	GlobalSection(ExtensibilityGlobals) = postSolution
		SolutionGuid = {1DDC06BC-4DEA-4656-A6EA-3726A43B3462}
	EndGlobalSection
EndGlobal
﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Threading.Tasks;
using elFinder.AspNet.Drawing;
using elFinder.AspNet.Drivers;
using elFinder.AspNet.Helpers;
using Microsoft.Extensions.Primitives;
using elFinder.AspNet.Models;

namespace elFinder.AspNet
{
    /// <summary>
    /// Represents a connector which processes elFinder requests
    /// </summary>
    public class Connector
    {
        public MimeDetectOption MimeDetect { get; set; } = MimeDetectOption.Auto;

        private readonly IDriver driver;

        public Connector(IDriver driver)
        {
            this.driver = driver;
        }

        public async Task<ConnectorResult> ProcessAsync(Dictionary<string, StringValues> parameters, IList<FileContent> files = null)
        {
            string cmd = parameters.GetValueOrDefault("cmd");
            if (string.IsNullOrEmpty(cmd))
            {
                return new ConnectorResult("errUnknownCmd");
            }

            switch (cmd)
            {
                case "archive":
                    {
                        var parentPath = await driver.ParsePathAsync(parameters.GetValueOrDefault("target"));
                        var paths = await GetFullPathArrayAsync(parameters.GetValueOrDefault("targets[]"));
                        var name = parameters.GetValueOrDefault("name");
                        var type = parameters.GetValueOrDefault("type");
                        return await driver.ArchiveAsync(parentPath, paths, name, type);
                    }
                case "dim":
                    {
                        var path = await driver.ParsePathAsync(parameters.GetValueOrDefault("target"));
                        return await driver.DimAsync(path);
                    }
                case "duplicate":
                    {
                        var paths = await GetFullPathArrayAsync(parameters.GetValueOrDefault("targets[]"));
                        return await driver.DuplicateAsync(paths);
                    }
                case "extract":
                    {
                        var fullPath = await driver.ParsePathAsync(parameters.GetValueOrDefault("target"));
                        var makedir = parameters.GetValueOrDefault("makedir");
                        return await driver.ExtractAsync(fullPath, makedir == "1");
                    }
                case "file":
                    {
                        var path = await driver.ParsePathAsync(parameters.GetValueOrDefault("target"));
                        return await driver.FileAsync(path, parameters.GetValueOrDefault("download") == "1");
                    }
                case "get":
                    {
                        var path = await driver.ParsePathAsync(parameters.GetValueOrDefault("target"));
                        return await driver.GetAsync(path);
                    }
                case "ls":
                    {
                        var path = await driver.ParsePathAsync(parameters.GetValueOrDefault("target"));
                        var intersects = parameters.GetValueOrDefault("intersect[]");

                        var mimeTypes = MimeDetect == MimeDetectOption.Internal
                            ? parameters.GetValueOrDefault("mimes[]")
                            : default;

                        return await driver.ListAsync(path, intersects, mimeTypes);
                    }
                case "mkdir":
                    {
                        var path = await driver.ParsePathAsync(parameters.GetValueOrDefault("target"));
                        var name = parameters.GetValueOrDefault("name");
                        var dirs = parameters.GetValueOrDefault("dirs[]");
                        return await driver.MakeDirAsync(path, name, dirs);
                    }
                case "mkfile":
                    {
                        var path = await driver.ParsePathAsync(parameters.GetValueOrDefault("target"));
                        var name = parameters.GetValueOrDefault("name");
                        return await driver.MakeFileAsync(path, name);
                    }
                case "open":
                    {
                        var path = await driver.ParsePathAsync(parameters.GetValueOrDefault("target"));

                        var mimeTypes = MimeDetect == MimeDetectOption.Internal
                            ? parameters.GetValueOrDefault("mimes[]")
                            : default;

                        if (parameters.GetValueOrDefault("init") == "1")
                        {
                            return await driver.InitAsync(path, mimeTypes);
                        }
                        else
                        {
                            return await driver.OpenAsync(path, parameters.GetValueOrDefault("tree") == "1", mimeTypes);
                        }
                    }
                case "parents":
                    {
                        var path = await driver.ParsePathAsync(parameters.GetValueOrDefault("target"));
                        return await driver.ParentsAsync(path);
                    }
                case "paste":
                    {
                        var paths = await GetFullPathArrayAsync(parameters.GetValueOrDefault("targets[]"));
                        var dst = parameters.GetValueOrDefault("dst");
                        bool cut = parameters.GetValueOrDefault("cut") == "1";
                        var renames = parameters.GetValueOrDefault("renames[]");
                        var suffix = parameters.GetValueOrDefault("suffix");
                        return await driver.PasteAsync(await driver.ParsePathAsync(dst), paths, cut, renames, suffix);
                    }
                case "put":
                    {
                        var path = await driver.ParsePathAsync(parameters.GetValueOrDefault("target"));
                        var content = parameters.GetValueOrDefault("content");
                        var encoding = parameters.GetValueOrDefault("encoding");

                        if (encoding == "scheme")
                        {
                            using (var client = new WebClient())
                            {
                                var data = await client.DownloadDataTaskAsync(new Uri(content));
                                return await driver.PutAsync(path, data);
                            }
                        }
                        else
                            return await driver.PutAsync(path, content);
                    }
                case "rename":
                    {
                        var path = await driver.ParsePathAsync(parameters.GetValueOrDefault("target"));
                        var name = parameters.GetValueOrDefault("name");
                        return await driver.RenameAsync(path, name);
                    }
                case "resize":
                    {
                        var path = await driver.ParsePathAsync(parameters.GetValueOrDefault("target"));
                        switch (parameters.GetValueOrDefault("mode"))
                        {
                            case "resize":
                                return await driver.ResizeAsync(
                                    path,
                                    int.Parse(parameters.GetValueOrDefault("width")),
                                    int.Parse(parameters.GetValueOrDefault("height")));

                            case "crop":
                                return await driver.CropAsync(
                                    path,
                                    int.Parse(parameters.GetValueOrDefault("x")),
                                    int.Parse(parameters.GetValueOrDefault("y")),
                                    int.Parse(parameters.GetValueOrDefault("width")),
                                    int.Parse(parameters.GetValueOrDefault("height")));

                            case "rotate":
                                return await driver.RotateAsync(path, int.Parse(parameters.GetValueOrDefault("degree")));

                            default:
                                return new ConnectorResult("errUnknownCmd");
                        }
                    }
                case "rm":
                    {
                        var paths = await GetFullPathArrayAsync(parameters.GetValueOrDefault("targets[]"));
                        return await driver.RemoveAsync(paths);
                    }
                case "search":
                    {
                        var path = await driver.ParsePathAsync(parameters.GetValueOrDefault("target"));
                        var query = parameters.GetValueOrDefault("q");

                        var mimeTypes = MimeDetect == MimeDetectOption.Internal
                            ? parameters.GetValueOrDefault("mimes[]")
                            : default;

                        return await driver.SearchAsync(path, query, mimeTypes);
                    }
                case "size":
                    {
                        var paths = await GetFullPathArrayAsync(parameters.GetValueOrDefault("targets[]"));
                        return await driver.SizeAsync(paths);
                    }
                case "tmb":
                    {
                        var paths = await GetFullPathArrayAsync(parameters.GetValueOrDefault("targets[]"));
                        return await driver.ThumbsAsync(paths);
                    }
                case "tree":
                    {
                        var path = await driver.ParsePathAsync(parameters.GetValueOrDefault("target"));
                        return await driver.TreeAsync(path);
                    }

                case "upload":
                    {
                        var path = await driver.ParsePathAsync(parameters.GetValueOrDefault("target"));
                        var uploadPath = await GetFullPathArrayAsync(parameters.GetValueOrDefault("upload_path[]"));
                        bool overwrite = parameters.GetValueOrDefault("overwrite") != "0";
                        var renames = parameters.GetValueOrDefault("renames[]");
                        var suffix = parameters.GetValueOrDefault("suffix");
                        return await driver.UploadAsync(path, files, overwrite, uploadPath, renames, suffix);
                    }
                default: return new ConnectorResult("errUnknownCmd");
            }
        }

        /// <summary>
        /// Get actual filesystem path by hash
        /// </summary>
        /// <param name="hash">Hash of file or directory</param>
        public async Task<string> GetPathByHashAsync(string hash)
        {
            var path = await driver.ParsePathAsync(hash);            
            return path.IsDirectory ? path.Directory.FullName + path.RootVolume.DirectorySeparatorChar : path.File.FullName;
        }

        public async Task<ConnectorResult> GetThumbnailAsync(/*HttpRequest request, HttpResponse response,*/ string hash)
        {
            if (hash != null)
            {
                var path = await driver.ParsePathAsync(hash);
                if (!path.IsDirectory && CanCreateThumbnail(path, path.RootVolume.PictureEditor))
                {
                    //if (!await HttpCacheHelper.IsFileFromCache(path.File, request, response))
                    //{
                    var thumb = await path.GenerateThumbnailAsync();
                    return new ConnectorResult(thumb);
                    //}
                    //else
                    //{
                    //	response.ContentType = Utils.GetMimeType(path.RootVolume.PictureEditor.ConvertThumbnailExtension(path.File.Extension));
                    //response.End();
                    //}
                }
            }
            return new ConnectorResult("errInvName");
        }

        private bool CanCreateThumbnail(FullPath path, IPictureEditor pictureEditor)
        {
            return !string.IsNullOrEmpty(path.RootVolume.ThumbnailUrl) && pictureEditor.CanProcessFile(path.File.Extension);
        }

        private async Task<IEnumerable<FullPath>> GetFullPathArrayAsync(StringValues targets)
        {
            var tasks = targets.Select(async t => await driver.ParsePathAsync(t));
            return await Task.WhenAll(tasks);
        }
    }

    public enum MimeDetectOption : byte
    {
        Auto = 0,
        Internal = 1,

        // Not supported
        //FInfo = 2,
        //MimeContentType = 3
    }
}
﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace elFinder.AspNet
{
    public class ConnectorResult
    {
        private readonly object _value;

        public ConnectorResult(object value)
        {
            _value = value;
        }

        public object Value
        {
            get { return Succeeded ? _value : new { error = _value }; }
        }

        public bool Succeeded
        {
            get { return !(_value is string || _value is IEnumerable<string>); }
        }
    }
}
﻿using System;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;
using System.IO;

namespace elFinder.AspNet.Drawing
{
    /// <summary>
    /// Represents default pictures editor
    /// </summary>
    public class DefaultPictureEditor : IPictureEditor
    {
        #region Constructors

        public DefaultPictureEditor(Color backgroundColor)
        {
            BackgroundColor = backgroundColor;
        }

        public DefaultPictureEditor()
            : this(Color.Transparent)
        {
        }

        #endregion Constructors

        #region IPictureEditor Members

        public Color BackgroundColor { get; set; }

        public bool CanProcessFile(string fileExtension)
        {
            string ext = fileExtension.ToLower();
            return ext == ".png" || ext == ".jpg" || ext == ".jpeg" || ext == ".gif" || ext == ".tiff";
        }

        public string ConvertThumbnailExtension(string originalImageExtension)
        {
            string ext = originalImageExtension.ToLower();
            if (ext == ".tiff")
            {
                return ".png";
            }

            if (ext == ".png" || ext == ".jpg" || ext == ".jpeg" || ext == ".gif")
            {
                return ext;
            }
            else
            {
                throw new ArgumentException(typeof(DefaultPictureEditor).FullName + " does not support thumbnails for '" + originalImageExtension + "' files.");
            }
        }

        public ImageWithMimeType Crop(Stream input, int x, int y, int width, int height)
        {
            using (var image = Image.FromStream(input))
            {
                return ScaleOrCrop(image, new Rectangle(x, y, width, height), new Rectangle(0, 0, width, height));
            }
        }

        public ImageWithMimeType GenerateThumbnail(Stream input, int size, bool keepAspectRatio)
        {
            using (var inputImage = Image.FromStream(input))
            {
                int targetWidth;
                int targetHeight;

                if (keepAspectRatio)
                {
                    double width = inputImage.Width;
                    double height = inputImage.Height;
                    double percentWidth = width != 0 ? size / width : 0;
                    double percentHeight = height != 0 ? size / height : 0;
                    double percent = percentHeight < percentWidth ? percentHeight : percentWidth;

                    targetWidth = (int)(width * percent);
                    targetHeight = (int)(height * percent);
                }
                else
                {
                    targetWidth = size;
                    targetHeight = size;
                }

                return ScaleOrCrop(
                    inputImage,
                    new Rectangle(0, 0, inputImage.Width, inputImage.Height),
                    new Rectangle(0, 0, targetWidth, targetHeight));
            }
        }

        public Size ImageSize(Stream input)
        {
            using (var image = Image.FromStream(input))
            {
                return new Size(image.Width, image.Height);
            }
        }

        public ImageWithMimeType Resize(Stream input, int width, int height)
        {
            using (var image = Image.FromStream(input))
            {
                return ScaleOrCrop(image, new Rectangle(0, 0, image.Width, image.Height), new Rectangle(0, 0, width, height));
            }
        }

        public ImageWithMimeType Rotate(Stream input, int angle)
        {
            using (var image = Image.FromStream(input))
            {
                return Rotate(image, angle);
            }
        }

        #endregion IPictureEditor Members

        /// <summary>
        /// Creates a new Image containing the same image, only rotated
        /// </summary>
        /// <param name="image">The <see cref="System.Drawing.Image"/> to rotate</param>
        /// <param name="degrees">The amount to rotate the image, clockwise, in degrees</param>
        /// <returns>A new <see cref="System.Drawing.Bitmap"/> that is just large enough to contain the rotated image without cutting any corners off.</returns>
        /// <remarks>Original code can be found at http://www.codeproject.com/Articles/58815/C-Image-PictureBox-Rotations </remarks>
        /// <exception cref="System.ArgumentNullException">Thrown if <see cref="image"/> is null.</exception>
        private ImageWithMimeType Rotate(Image image, float degrees)
        {
            if (image == null)
            {
                throw new ArgumentNullException("image");
            }

            const double halfPi = Math.PI / 2.0;
            double oldWidth = image.Width;
            double oldHeight = image.Height;

            double theta = degrees * Math.PI / 180.0;
            double lockedTheta = theta;

            while (lockedTheta < 0.0)
            {
                lockedTheta += 2 * Math.PI;
            }

            double newWidth, newHeight;
            int nWidth, nHeight;

            double adjacentTop;
            double oppositeTop;
            double adjacentBottom;
            double oppositeBottom;

            if ((lockedTheta >= 0.0 && lockedTheta < halfPi) ||
                (lockedTheta >= Math.PI && lockedTheta < (Math.PI + halfPi)))
            {
                adjacentTop = Math.Abs(Math.Cos(lockedTheta)) * oldWidth;
                oppositeTop = Math.Abs(Math.Sin(lockedTheta)) * oldWidth;

                adjacentBottom = Math.Abs(Math.Cos(lockedTheta)) * oldHeight;
                oppositeBottom = Math.Abs(Math.Sin(lockedTheta)) * oldHeight;
            }
            else
            {
                adjacentTop = Math.Abs(Math.Sin(lockedTheta)) * oldHeight;
                oppositeTop = Math.Abs(Math.Cos(lockedTheta)) * oldHeight;

                adjacentBottom = Math.Abs(Math.Sin(lockedTheta)) * oldWidth;
                oppositeBottom = Math.Abs(Math.Cos(lockedTheta)) * oldWidth;
            }

            newWidth = adjacentTop + oppositeBottom;
            newHeight = adjacentBottom + oppositeTop;

            nWidth = (int)Math.Ceiling(newWidth);
            nHeight = (int)Math.Ceiling(newHeight);

            using (var rotatedBmp = new Bitmap(nWidth, nHeight))
            {
                using (var g = Graphics.FromImage(rotatedBmp))
                {
                    g.Clear(BackgroundColor);
                    Point[] points;
                    if (lockedTheta >= 0.0 && lockedTheta < halfPi)
                    {
                        points = new Point[]
                        {
                            new Point((int) oppositeBottom, 0),
                            new Point(nWidth, (int) oppositeTop),
                            new Point(0, (int) adjacentBottom)
                        };
                    }
                    else if (lockedTheta >= halfPi && lockedTheta < Math.PI)
                    {
                        points = new Point[]
                        {
                            new Point(nWidth, (int) oppositeTop),
                            new Point((int) adjacentTop, nHeight),
                            new Point((int) oppositeBottom, 0)
                        };
                    }
                    else if (lockedTheta >= Math.PI && lockedTheta < (Math.PI + halfPi))
                    {
                        points = new Point[]
                        {
                            new Point((int) adjacentTop, nHeight),
                            new Point(0, (int) adjacentBottom),
                            new Point(nWidth, (int) oppositeTop)
                        };
                    }
                    else
                    {
                        points = new Point[]
                        {
                            new Point(0, (int) adjacentBottom),
                            new Point((int) oppositeBottom, 0),
                            new Point((int) adjacentTop, nHeight)
                        };
                    }
                    g.InterpolationMode = InterpolationMode.HighQualityBilinear;

                    g.DrawImage(image, points);
                }
                return SaveImage(rotatedBmp, image.RawFormat);
            }
        }

        private ImageWithMimeType SaveImage(Bitmap image, ImageFormat imageFormat)
        {
            var memoryStream = new MemoryStream(); // Will be disposed when "ImageWithMimeType" is disposed

            string mimeType;
            if (imageFormat.Guid == ImageFormat.Jpeg.Guid)
            {
                image.Save(memoryStream, ImageFormat.Jpeg);
                mimeType = "image/jpeg";
            }
            else if (imageFormat.Guid == ImageFormat.Gif.Guid)
            {
                image.Save(memoryStream, ImageFormat.Gif);
                mimeType = "image/gif";
            }
            else
            {
                image.Save(memoryStream, ImageFormat.Png);
                mimeType = "image/png";
            }
            memoryStream.Position = 0;
            return new ImageWithMimeType(mimeType, memoryStream);
        }

        private ImageWithMimeType ScaleOrCrop(Image image, Rectangle source, Rectangle destination)
        {
            using (var newImage = new Bitmap(destination.Width, destination.Height))
            {
                using (var g = Graphics.FromImage(newImage))
                {
                    g.SmoothingMode = SmoothingMode.HighQuality;
                    g.InterpolationMode = InterpolationMode.HighQualityBicubic;
                    g.PixelOffsetMode = PixelOffsetMode.HighQuality;
                    g.DrawImage(image, destination, source, GraphicsUnit.Pixel);
                }
                return SaveImage(newImage, image.RawFormat);
            }
        }
    }
}
﻿using System.Drawing;
using System.IO;

namespace elFinder.AspNet.Drawing
{
    /// <summary>
    /// Represents a picture editor
    /// </summary>
    public interface IPictureEditor
    {
        /// <summary>
        /// Get or sets background color, which going be used in rotating operations
        /// </summary>
        Color BackgroundColor { get; set; }

        /// <summary>
        /// Determines whether this picture editor can process the given file extension
        /// </summary>
        /// <param name="fileExtension">The extension of the file</param>
        /// <returns><c>True</c> if can process. Otherwise, <c>false</c></returns>
        bool CanProcessFile(string fileExtension);

        /// <summary>
        /// Convert extension of file to browser's compatible images (png, jpg or gif)
        /// </summary>
        /// <param name="originalImageExtension">Extension of original file</param>
        /// <returns>Browser's compatible extension</returns>
        string ConvertThumbnailExtension(string originalImageExtension);

        /// <summary>
        /// Crop image
        /// </summary>
        /// <param name="input">Input stream of image</param>
        /// <param name="x">The x-coordinate of the upper-left corner of the cropping rectangle</param>
        /// <param name="y">The y-coordinate of the upper-left corner of the cropping rectangle</param>
        /// <param name="width">The width of cropping rectangle</param>
        /// <param name="height">The height of cropping rectangle</param>
        ImageWithMimeType Crop(Stream input, int x, int y, int width, int height);

        /// <summary>
        /// Generates a thumbnail of the given image
        /// </summary>
        /// <param name="input">Input stream of image</param>
        /// <param name="size">Size in pixels of output thumbnail. Thumbnail is square.</param>
        /// <param name="keepAspectRatio"><c>True</c> if aspect ratio of output thumbnail must equal aspect ratio of input image.</param>
        /// <returns>Generated thumbnail</returns>
        ImageWithMimeType GenerateThumbnail(Stream input, int size, bool keepAspectRatio);

        /// <summary>
        /// Get Width and Height of the image
        /// </summary>
        /// <param name="input">Input stream of image</param>
        Size ImageSize(Stream input);

        /// <summary>
        /// Resize image
        /// </summary>
        /// <param name="input">Input stream of image</param>
        /// <param name="width">The desired width of the output image</param>
        /// <param name="height">The desired height of the output image</param>
        ImageWithMimeType Resize(Stream input, int width, int height);

        /// <summary>
        /// Rotate image
        /// </summary>
        /// <param name="input">Input stream of image</param>
        /// <param name="degrees">Angle of rotation in degrees</param>
        ImageWithMimeType Rotate(Stream input, int degrees);
    }
}
﻿using System;
using System.IO;

namespace elFinder.AspNet.Drawing
{
    public class ImageWithMimeType : IDisposable
    {
        public ImageWithMimeType(string mimeType, Stream stream)
        {
            MimeType = mimeType;
            ImageStream = stream;
        }

        public Stream ImageStream { get; private set; }

        public string MimeType { get; private set; }

        #region IDisposable Support

        private bool disposedValue = false; // To detect redundant calls

        protected virtual void Dispose(bool disposing)
        {
            if (!disposedValue)
            {
                if (disposing)
                {
                    // TODO: dispose managed state (managed objects).
                    ImageStream.Dispose();
                }

                // TODO: free unmanaged resources (unmanaged objects) and override a finalizer below.
                // TODO: set large fields to null.

                disposedValue = true;
            }
        }

        // TODO: override a finalizer only if Dispose(bool disposing) above has code to free unmanaged resources.
        // ~ImageWithMimeType() {
        //   // Do not change this code. Put cleanup code in Dispose(bool disposing) above.
        //   Dispose(false);
        // }

        // This code added to correctly implement the disposable pattern.
        public void Dispose()
        {
            // Do not change this code. Put cleanup code in Dispose(bool disposing) above.
            Dispose(true);
            // TODO: uncomment the following line if the finalizer is overridden above.
            // GC.SuppressFinalize(this);
        }

        #endregion IDisposable Support
    }
}
﻿using System.Collections.Generic;
using System.IO.Compression;
using System.Threading.Tasks;

namespace elFinder.AspNet.Drivers
{
    /// <summary>
    /// Represents a Base elFinder Driver
    /// </summary>
    public abstract class BaseDriver
    {
        public ICollection<RootVolume> Roots { get; protected set; }

        public string VolumePrefix { get; protected set; }

        /// <summary>
        /// Adds an object to the end of the roots.
        /// </summary>
        /// <param name="item"></param>
        public void AddRoot(RootVolume item)
        {
            Roots.Add(item);
            item.VolumeId = $"{VolumePrefix}{Roots.Count}_";
        }

        protected virtual async Task AddDirectoryToArchiveAsync(ZipArchive zipFile, IDirectory directoryInfo, string root)
        {
            string entryName = $"{root}{directoryInfo.Name}/";

            zipFile.CreateEntry(entryName);
            var dirs = await directoryInfo.GetDirectoriesAsync();

            foreach (var dir in dirs)
            {
                await AddDirectoryToArchiveAsync(zipFile, dir, entryName);
            }

            var files = await directoryInfo.GetFilesAsync(null);
            foreach (var file in files)
            {
                zipFile.CreateEntryFromFile(file.FullName, entryName + file.Name);
            }
        }

        /*protected Task<JsonResult> Json(object data)
        {
            return Task.FromResult(new JsonResult(data) { ContentType = "text/html" });
        }*/
    }
}
﻿using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading.Tasks;

namespace elFinder.AspNet.Drivers.FileSystem
{
    public class FileSystemDirectory : IDirectory
    {
        private readonly DirectoryInfo directoryInfo;

        #region Constructors

        public FileSystemDirectory(string dirName)
        {
            directoryInfo = new DirectoryInfo(dirName);
        }

        public FileSystemDirectory(DirectoryInfo directoryInfo)
        {
            this.directoryInfo = directoryInfo;
        }

        #endregion Constructors

        #region IDirectory Members

        public FileAttributes Attributes
        {
            get => directoryInfo.Attributes;
            set => directoryInfo.Attributes = value;
        }

        public Task<bool> ExistsAsync => Task.FromResult(directoryInfo.Exists);

        public string FullName => directoryInfo.FullName;

        public Task<DateTime> LastWriteTimeUtcAsync => Task.FromResult(directoryInfo.LastWriteTimeUtc);

        public string Name => directoryInfo.Name;

        public IDirectory Parent => new FileSystemDirectory(directoryInfo.Parent);

        public Task CreateAsync()
        {
            directoryInfo.Create();
            directoryInfo.Refresh();
            return Task.FromResult(0);
        }

        public Task DeleteAsync()
        {
            directoryInfo.Delete(true);
            return Task.FromResult(0);
        }

        public Task<IEnumerable<IDirectory>> GetDirectoriesAsync()
        {
            var dirs = directoryInfo.GetDirectories().Select(d => new FileSystemDirectory(d) as IDirectory);
            return Task.FromResult(dirs);
        }

        public Task<IEnumerable<IDirectory>> GetDirectoriesAsync(string pattern)
        {
            var dirs = directoryInfo.GetDirectories(pattern, SearchOption.AllDirectories).Select(d => new FileSystemDirectory(d) as IDirectory);
            return Task.FromResult(dirs);
        }

        public Task<IEnumerable<IFile>> GetFilesAsync(IEnumerable<string> mimeTypes)
        {
            var files = directoryInfo.GetFiles().Select(f => new FileSystemFile(f) as IFile);

            if (mimeTypes != null && mimeTypes.Count() > 0)
            {
                files = files.Where(f => mimeTypes.Contains(f.MimeType) || mimeTypes.Contains(f.MimeType.Type));
            }

            return Task.FromResult(files);
        }

        public Task<IEnumerable<IFile>> GetFilesAsync(IEnumerable<string> mimeTypes, string pattern)
        {
            var files = directoryInfo.GetFiles(pattern, SearchOption.AllDirectories).Select(f => new FileSystemFile(f) as IFile);

            if (mimeTypes != null && mimeTypes.Count() > 0)
            {
                files = files.Where(f => mimeTypes.Contains(f.MimeType) || mimeTypes.Contains(f.MimeType.Type));
            }

            return Task.FromResult(files);
        }

        #endregion IDirectory Members

        public void MoveTo(string destDirName)
        {
            directoryInfo.MoveTo(destDirName);
        }
    }
}
﻿using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.IO.Compression;
using System.Linq;
using System.Threading.Tasks;
using elFinder.AspNet.Drawing;
using elFinder.AspNet.Helpers;
using elFinder.AspNet.Models;
using elFinder.AspNet.Models.Commands;

namespace elFinder.AspNet.Drivers.FileSystem
{
    /// <summary>
    /// Represents a driver for local file system
    /// </summary>
    public class FileSystemDriver : BaseDriver, IDriver
    {
        private const string _volumePrefix = "v";

        #region Constructor

        /// <summary>
        /// Initialize new instance of class ElFinder.FileSystemDriver
        /// </summary>
        public FileSystemDriver()
        {
            VolumePrefix = _volumePrefix;
            Roots = new List<RootVolume>();
        }

        #endregion Constructor

        #region IDriver Members

        public async Task<ConnectorResult> ArchiveAsync(FullPath parentPath, IEnumerable<FullPath> paths, string filename, string mimeType)
        {
            var response = new AddResponseModel();

            if (paths == null)
            {
                throw new NotSupportedException();
            }

            if (mimeType != "application/zip")
            {
                throw new NotSupportedException("Only .zip files are currently supported.");
            }

            // Parse target path

            var directoryInfo = parentPath.Directory;

            if (directoryInfo != null)
            {
                if (filename is null)
                {
                    filename = "newfile";
                }

                if (filename.EndsWith(".zip"))
                {
                    filename = filename.Replace(".zip", "");
                }

                string newPath = Path.Combine(directoryInfo.FullName, filename + ".zip");

                if (File.Exists(newPath))
                {
                    File.Delete(newPath);
                }

                using (var newFile = ZipFile.Open(newPath, ZipArchiveMode.Create))
                {
                    foreach (var tg in paths)
                    {
                        if (tg.IsDirectory)
                        {
                            await AddDirectoryToArchiveAsync(newFile, tg.Directory, "");
                        }
                        else
                        {
                            newFile.CreateEntryFromFile(tg.File.FullName, tg.File.Name);
                        }
                    }
                }

                response.Added.Add(await BaseModel.CreateAsync(new FileSystemFile(newPath), parentPath.RootVolume));
            }

            return new ConnectorResult(response);
        }

        public async Task<ConnectorResult> CropAsync(FullPath path, int x, int y, int width, int height)
        {
            await RemoveThumbsAsync(path);

            // Crop Image
            ImageWithMimeType image;
            using (var stream = new FileStream(path.File.FullName, FileMode.Open))
            {
                image = path.RootVolume.PictureEditor.Crop(stream, x, y, width, height);
            }

            using (var fileStream = File.Create(path.File.FullName))
            {
                await image.ImageStream.CopyToAsync(fileStream);
            }

            var output = new ChangedResponseModel();
            output.Changed.Add(await BaseModel.CreateAsync(path.File, path.RootVolume));
            return new ConnectorResult(output);
        }

        public Task<ConnectorResult> DimAsync(FullPath path)
        {
            using (var stream = new FileStream(path.File.FullName, FileMode.Open))
            {
                var response = new DimResponseModel(path.RootVolume.PictureEditor.ImageSize(stream));
                return Task.FromResult(new ConnectorResult(response));
            }
        }

        public async Task<ConnectorResult> DuplicateAsync(IEnumerable<FullPath> paths)
        {
            var response = new AddResponseModel();
            foreach (var path in paths)
            {
                if (path.IsDirectory)
                {
                    string parentPath = path.Directory.Parent.FullName;
                    string name = path.Directory.Name;
                    string newName = $"{parentPath}{Path.DirectorySeparatorChar}{name} copy";

                    if (!Directory.Exists(newName))
                    {
                        DirectoryCopy(path.Directory.FullName, newName, true);
                    }
                    else
                    {
                        bool foundNewName = false;
                        for (int i = 1; i < 100; i++)
                        {
                            newName = $"{parentPath}{Path.DirectorySeparatorChar}{name} copy {i}";
                            if (!Directory.Exists(newName))
                            {
                                DirectoryCopy(path.Directory.FullName, newName, true);
                                foundNewName = true;
                                break;
                            }
                        }

                        if (!foundNewName)
                        {
                            return new ConnectorResult($"Unable to create new file with name {parentPath}{Path.DirectorySeparatorChar}{name} copy");
                        }
                    }

                    response.Added.Add(await BaseModel.CreateAsync(new FileSystemDirectory(newName), path.RootVolume));
                }
                else
                {
                    string parentPath = path.File.Directory.FullName;
                    string name = path.File.Name.Substring(0, path.File.Name.Length - path.File.Extension.Length);
                    string ext = path.File.Extension;

                    string newName = $"{parentPath}{Path.DirectorySeparatorChar}{name} copy{ext}";

                    if (!File.Exists(newName))
                    {
                        File.Copy(path.File.FullName, newName);
                    }
                    else
                    {
                        bool foundNewName = false;
                        for (int i = 1; i < 100; i++)
                        {
                            newName = $"{parentPath}{Path.DirectorySeparatorChar}{name} copy {i}{ext}";
                            if (!File.Exists(newName))
                            {
                                File.Copy(path.File.FullName, newName);
                                foundNewName = true;
                                break;
                            }
                        }

                        if (!foundNewName)
                        {
                            return new ConnectorResult($"Unable to create new file with name {parentPath}{Path.DirectorySeparatorChar}{name} copy{ext}");
                        }
                    }
                    response.Added.Add(await BaseModel.CreateAsync(new FileSystemFile(newName), path.RootVolume));
                }
            }
            return new ConnectorResult(response);
        }

        public async Task<ConnectorResult> ExtractAsync(FullPath fullPath, bool newFolder)
        {
            var response = new AddResponseModel();

            if (fullPath.IsDirectory || fullPath.File.Extension.ToLower() != ".zip")
            {
                throw new NotSupportedException("Only .zip files are currently supported.");
            }

            string rootPath = fullPath.File.Directory.FullName;

            if (newFolder)
            {
                rootPath = Path.Combine(rootPath, Path.GetFileNameWithoutExtension(fullPath.File.Name));
                var rootDir = new FileSystemDirectory(rootPath);
                if (!await rootDir.ExistsAsync)
                {
                    await rootDir.CreateAsync();
                }
                response.Added.Add(await BaseModel.CreateAsync(rootDir, fullPath.RootVolume));
            }

            using (var archive = ZipFile.OpenRead(fullPath.File.FullName))
            {
                string separator = Path.DirectorySeparatorChar.ToString();
                foreach (ZipArchiveEntry entry in archive.Entries)
                {
                    try
                    {
                        //Replce zip entry path separator by system path separator
                        string file = Path.Combine(rootPath, entry.FullName)
                             .Replace("/", separator).Replace("\\", separator);

                        string destPath = Path.GetFullPath(file);
                        if (!destPath.StartsWith(rootPath, StringComparison.OrdinalIgnoreCase))
                        {
                            throw new NotSupportedException($"Entry '{entry.FullName}' is outside of the destination directory.");
                        }

                        if (file.EndsWith(separator)) //directory
                        {
                            var dir = new FileSystemDirectory(file);

                            if (!await dir.ExistsAsync)
                            {
                                await dir.CreateAsync();
                            }
                            if (!newFolder)
                            {
                                response.Added.Add(await BaseModel.CreateAsync(dir, fullPath.RootVolume));
                            }
                        }
                        else
                        {
                            entry.ExtractToFile(file, true);
                            if (!newFolder)
                            {
                                response.Added.Add(await BaseModel.CreateAsync(new FileSystemFile(file), fullPath.RootVolume));
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        Trace.TraceError("{0} - {1}", entry.FullName, ex.Message);
                    }
                }
            }

            return new ConnectorResult(response);
        }

        public async Task<ConnectorResult> FileAsync(FullPath path, bool download)
        {
            FileContent result;

            if (path.IsDirectory)
            {
                return new ConnectorResult("errNotFile");
            }

            if (!await path.File.ExistsAsync)
            {
                return new ConnectorResult("errFileNotFound");
            }

            if (path.RootVolume.IsShowOnly)
            {
                return new ConnectorResult("errPerm");
            }

            result = new FileContent {
                FileName = path.File.FullName,
                Length = await path.File.LengthAsync,
                ContentStream = File.OpenRead(path.File.FullName),
                ContentType = download ? "application/octet-stream" : MimeHelper.GetMimeType(path.File.Extension)
            };

            return new ConnectorResult(result);
        }

        public async Task<ConnectorResult> GetAsync(FullPath path)
        {
            var response = new GetResponseModel();
            using (var reader = new StreamReader(await path.File.OpenReadAsync()))
            {
                response.Content = reader.ReadToEnd();
            }
            return new ConnectorResult(response);
        }

        public async Task<ConnectorResult> InitAsync(FullPath path, IEnumerable<string> mimeTypes)
        {
            if (path == null)
            {
                var root = Roots.FirstOrDefault(r => r.StartDirectory != null);
                if (root == null)
                {
                    root = Roots.First();
                }

                path = new FullPath(root, new FileSystemDirectory(root.StartDirectory ?? root.RootDirectory), null);
            }

            var response = new InitResponseModel(await BaseModel.CreateAsync(path.Directory, path.RootVolume), new Options(path));

            foreach (var item in await path.Directory.GetFilesAsync(mimeTypes))
            {
                if (!item.Attributes.HasFlag(FileAttributes.Hidden))
                {
                    response.Files.Add(await BaseModel.CreateAsync(item, path.RootVolume));
                }
            }
            foreach (var item in await path.Directory.GetDirectoriesAsync())
            {
                if (!item.Attributes.HasFlag(FileAttributes.Hidden))
                {
                    response.Files.Add(await BaseModel.CreateAsync(item, path.RootVolume));
                }
            }

            foreach (var item in Roots)
            {
                response.Files.Add(await BaseModel.CreateAsync(new FileSystemDirectory(item.RootDirectory), item));
            }

            if (path.RootVolume.RootDirectory != path.Directory.FullName)
            {
                var dirInfo = new DirectoryInfo(path.RootVolume.RootDirectory);
                foreach (var item in dirInfo.GetDirectories())
                {
                    var attributes = item.Attributes;
                    if (!attributes.HasFlag(FileAttributes.Hidden))
                    {
                        response.Files.Add(await BaseModel.CreateAsync(new FileSystemDirectory(item), path.RootVolume));
                    }
                }
            }

            if (path.RootVolume.MaxUploadSize.HasValue)
            {
                response.Options.UploadMaxSize = $"{path.RootVolume.MaxUploadSizeInKb.Value}K";
            }
            return new ConnectorResult(response);
        }

        public async Task<ConnectorResult> ListAsync(FullPath path, IEnumerable<string> intersect, IEnumerable<string> mimeTypes)
        {
            var response = new ListResponseModel();

            foreach (var item in await path.Directory.GetFilesAsync(mimeTypes))
            {
                if (!item.Attributes.HasFlag(FileAttributes.Hidden))
                {
                    response.List.Add(item.Name);
                }
            }

            foreach (var item in await path.Directory.GetDirectoriesAsync())
            {
                if (!item.Attributes.HasFlag(FileAttributes.Hidden))
                {
                    response.List.Add(item.Name);
                }
            }

            if (intersect.Any())
            {
                response.List.RemoveAll(x => !intersect.Contains(x));
            }

            return new ConnectorResult(response);
        }

        public async Task<ConnectorResult> MakeDirAsync(FullPath path, string name, IEnumerable<string> dirs)
        {
            var response = new AddResponseModel();

            if (!string.IsNullOrEmpty(name))
            {
                var newDir = new FileSystemDirectory(Path.Combine(path.Directory.FullName, name));
                await newDir.CreateAsync();
                response.Added.Add(await BaseModel.CreateAsync(newDir, path.RootVolume));
            }

            foreach (string dir in dirs)
            {
                string dirName = dir.StartsWith("/") ? dir.Substring(1) : dir;
                var newDir = new FileSystemDirectory(Path.Combine(path.Directory.FullName, dirName));
                await newDir.CreateAsync();

                response.Added.Add(await BaseModel.CreateAsync(newDir, path.RootVolume));

                string relativePath = newDir.FullName.Substring(path.RootVolume.RootDirectory.Length);
                response.Hashes.Add($"/{dirName}", path.RootVolume.VolumeId + HttpEncoder.EncodePath(relativePath));
            }

            return new ConnectorResult(response);
        }

        public async Task<ConnectorResult> MakeFileAsync(FullPath path, string name)
        {
            var newFile = new FileSystemFile(Path.Combine(path.Directory.FullName, name));
            await newFile.CreateAsync();

            var response = new AddResponseModel();
            response.Added.Add(await BaseModel.CreateAsync(newFile, path.RootVolume));
            return new ConnectorResult(response);
        }

        public async Task<ConnectorResult> OpenAsync(FullPath path, bool tree, IEnumerable<string> mimeTypes)
        {
            var response = new OpenResponse(await BaseModel.CreateAsync(path.Directory, path.RootVolume), path);
            foreach (var item in await path.Directory.GetFilesAsync(mimeTypes))
            {
                if (!item.Attributes.HasFlag(FileAttributes.Hidden))
                {
                    response.Files.Add(await BaseModel.CreateAsync(item, path.RootVolume));
                }
            }
            foreach (var item in await path.Directory.GetDirectoriesAsync())
            {
                if (!item.Attributes.HasFlag(FileAttributes.Hidden))
                {
                    response.Files.Add(await BaseModel.CreateAsync(item, path.RootVolume));
                }
            }

            // Add parents
            if (tree)
            {
                var parent = path.Directory;

                var rootDirectory = new DirectoryInfo(path.RootVolume.RootDirectory);
                while (parent != null && parent.Name != rootDirectory.Name)
                {
                    // Update parent
                    parent = parent.Parent;

                    // Ensure it's a child of the root
                    if (parent != null && path.RootVolume.RootDirectory.Contains(parent.Name))
                    {
                        response.Files.Insert(0, await BaseModel.CreateAsync(parent, path.RootVolume));
                    }
                }
            }

            return new ConnectorResult(response);
        }

        public async Task<ConnectorResult> ParentsAsync(FullPath path)
        {
            var response = new TreeResponseModel();
            if (path.Directory.FullName == path.RootVolume.RootDirectory)
            {
                response.Tree.Add(await BaseModel.CreateAsync(path.Directory, path.RootVolume));
            }
            else
            {
                var parent = path.Directory;
                foreach (var item in await parent.Parent.GetDirectoriesAsync())
                {
                    response.Tree.Add(await BaseModel.CreateAsync(item, path.RootVolume));
                }
                while (parent.FullName != path.RootVolume.RootDirectory)
                {
                    parent = parent.Parent;
                    response.Tree.Add(await BaseModel.CreateAsync(parent, path.RootVolume));
                }
            }
            return new ConnectorResult(response);
        }

        public async Task<FullPath> ParsePathAsync(string target)
        {
            if (string.IsNullOrEmpty(target))
            {
                return null;
            }

            string volumePrefix = null;
            string pathHash = null;
            for (int i = 0; i < target.Length; i++)
            {
                if (target[i] == '_')
                {
                    pathHash = target.Substring(i + 1);
                    volumePrefix = target.Substring(0, i + 1);
                    break;
                }
            }

            var root = Roots.First(r => r.VolumeId == volumePrefix);
            var rootDirectory = new DirectoryInfo(root.RootDirectory);
            string path = HttpEncoder.DecodePath(pathHash);
            string dirUrl = path != rootDirectory.Name ? path : string.Empty;
            var dir = new FileSystemDirectory(root.RootDirectory + dirUrl);

            if (await dir.ExistsAsync)
            {
                return new FullPath(root, dir, target);
            }
            else
            {
                var file = new FileSystemFile(root.RootDirectory + dirUrl);
                return new FullPath(root, file, target);
            }
        }

        public async Task<ConnectorResult> PasteAsync(FullPath dest, IEnumerable<FullPath> paths, bool isCut, IEnumerable<string> renames, string suffix)
        {
            var response = new ReplaceResponseModel();

            foreach (string rename in renames)
            {
                var fileInfo = new FileInfo(Path.Combine(dest.Directory.FullName, rename));
                string destination = Path.Combine(dest.Directory.FullName, $"{Path.GetFileNameWithoutExtension(rename)}{suffix}{Path.GetExtension(rename)}");
                fileInfo.MoveTo(destination);
                response.Added.Add(await BaseModel.CreateAsync(new FileSystemFile(destination), dest.RootVolume));
            }

            foreach (var src in paths)
            {
                if (src.IsDirectory)
                {
                    var newDir = new FileSystemDirectory(Path.Combine(dest.Directory.FullName, src.Directory.Name));
                    if (await newDir.ExistsAsync)
                    {
                        Directory.Delete(newDir.FullName, true);
                    }

                    if (isCut)
                    {
                        await RemoveThumbsAsync(src);
                        Directory.Move(src.Directory.FullName, newDir.FullName);
                        response.Removed.Add(src.HashedTarget);
                    }
                    else
                    {
                        DirectoryCopy(src.Directory.FullName, newDir.FullName, true);
                    }

                    response.Added.Add(await BaseModel.CreateAsync(newDir, dest.RootVolume));
                }
                else
                {
                    var newFile = new FileSystemFile(Path.Combine(dest.Directory.FullName, src.File.Name));
                    if (await newFile.ExistsAsync)
                    {
                        await newFile.DeleteAsync();
                    }

                    if (isCut)
                    {
                        await RemoveThumbsAsync(src);
                        File.Move(src.File.FullName, newFile.FullName);
                        response.Removed.Add(src.HashedTarget);
                    }
                    else
                    {
                        File.Copy(src.File.FullName, newFile.FullName);
                    }
                    response.Added.Add(await BaseModel.CreateAsync(newFile, dest.RootVolume));
                }
            }
            return new ConnectorResult(response);
        }

        public async Task<ConnectorResult> PutAsync(FullPath path, string content)
        {
            var response = new ChangedResponseModel();
            using (var fileStream = new FileStream(path.File.FullName, FileMode.Create))
            using (var writer = new StreamWriter(fileStream))
            {
                writer.Write(content);
            }
            response.Changed.Add(await BaseModel.CreateAsync(path.File, path.RootVolume));
            return new ConnectorResult(response);
        }

        public async Task<ConnectorResult> PutAsync(FullPath path, byte[] content)
        {
            var response = new ChangedResponseModel();
            using (var fileStream = new FileStream(path.File.FullName, FileMode.Create))
            using (var writer = new BinaryWriter(fileStream))
            {
                writer.Write(content);
            }
            response.Changed.Add(await BaseModel.CreateAsync(path.File, path.RootVolume));
            return new ConnectorResult(response);
        }

        public async Task<ConnectorResult> RemoveAsync(IEnumerable<FullPath> paths)
        {
            var response = new RemoveResponseModel();
            foreach (var path in paths)
            {
                await RemoveThumbsAsync(path);
                try
                {
                    if (path.IsDirectory)
                    {
                        Directory.Delete(path.Directory.FullName, true);
                    }
                    else
                    {
                        File.Delete(path.File.FullName);
                    }
                }
                catch (Exception ex)
                {
                    Trace.TraceError(ex.Message);
                }
                response.Removed.Add(path.HashedTarget);
            }
            return new ConnectorResult(response);
        }

        public async Task<ConnectorResult> RenameAsync(FullPath path, string name)
        {
            var response = new ReplaceResponseModel();
            response.Removed.Add(path.HashedTarget);
            await RemoveThumbsAsync(path);

            if (path.IsDirectory)
            {
                var newPath = new FileSystemDirectory(Path.Combine(path.Directory.Parent.FullName, name));
                string destPath = Path.GetFullPath(newPath.FullName);
                if (!destPath.StartsWith(path.RootVolume.RootDirectory, StringComparison.OrdinalIgnoreCase))
                {
                    throw new NotSupportedException($"Entry '{name}' is outside of the home directory.");
                }
                Directory.Move(path.Directory.FullName, newPath.FullName);
                response.Added.Add(await BaseModel.CreateAsync(newPath, path.RootVolume));
            }
            else
            {
                var newPath = new FileSystemFile(Path.Combine(path.File.DirectoryName, name));
                string destPath = Path.GetFullPath(newPath.FullName);
                if (!destPath.StartsWith(path.RootVolume.RootDirectory, StringComparison.OrdinalIgnoreCase))
                {
                    throw new NotSupportedException($"Entry '{name}' is outside of the home directory.");
                }
                File.Move(path.File.FullName, newPath.FullName);
                response.Added.Add(await BaseModel.CreateAsync(newPath, path.RootVolume));
            }

            return new ConnectorResult(response);
        }

        public async Task<ConnectorResult> ResizeAsync(FullPath path, int width, int height)
        {
            await RemoveThumbsAsync(path);

            // Resize Image
            ImageWithMimeType image;
            using (var stream = new FileStream(path.File.FullName, FileMode.Open))
            {
                image = path.RootVolume.PictureEditor.Resize(stream, width, height);
            }

            using (var fileStream = File.Create(path.File.FullName))
            {
                await image.ImageStream.CopyToAsync(fileStream);
            }

            var output = new ChangedResponseModel();
            output.Changed.Add(await BaseModel.CreateAsync(path.File, path.RootVolume));
            return new ConnectorResult(output);
        }

        public async Task<ConnectorResult> RotateAsync(FullPath path, int degree)
        {
            await RemoveThumbsAsync(path);

            // Rotate Image
            ImageWithMimeType image;
            using (var stream = new FileStream(path.File.FullName, FileMode.Open))
            {
                image = path.RootVolume.PictureEditor.Rotate(stream, degree);
            }

            using (var fileStream = File.Create(path.File.FullName))
            {
                await image.ImageStream.CopyToAsync(fileStream);
            }

            var output = new ChangedResponseModel();
            output.Changed.Add(await BaseModel.CreateAsync(path.File, path.RootVolume));
            return new ConnectorResult(output);
        }

        public async Task<ConnectorResult> SearchAsync(FullPath path, string query, IEnumerable<string> mimeTypes)
        {
            var response = new SearchResponseModel();

            if (!query.Any(Path.GetInvalidFileNameChars().Contains))
            {
                foreach (var item in await path.Directory.GetFilesAsync(mimeTypes, string.Concat("*", query, "*")))
                {
                    if (!item.Attributes.HasFlag(FileAttributes.Hidden) && !item.Directory.Attributes.HasFlag(FileAttributes.Hidden))
                    {
                        response.Files.Add(await BaseModel.CreateAsync(item, path.RootVolume));
                    }
                }

                if (query != ".")
                {
                    foreach (var item in await path.Directory.GetDirectoriesAsync(string.Concat("*", query, "*")))
                    {
                        if (!item.Attributes.HasFlag(FileAttributes.Hidden))
                        {
                            response.Files.Add(await BaseModel.CreateAsync(item, path.RootVolume));
                        }
                    }
                }
            }

            return new ConnectorResult(response);
        }

        public async Task<ConnectorResult> SizeAsync(IEnumerable<FullPath> paths)
        {
            var response = new SizeResponseModel();

            foreach (var path in paths)
            {
                if (path.IsDirectory)
                {
                    response.DirectoryCount++; // API counts the current directory in the total

                    var sizeAndCount = DirectorySizeAndCount(new DirectoryInfo(path.Directory.FullName));

                    response.DirectoryCount += sizeAndCount.DirectoryCount;
                    response.FileCount += sizeAndCount.FileCount;
                    response.Size += sizeAndCount.Size;
                }
                else
                {
                    response.FileCount++;
                    response.Size += await path.File.LengthAsync;
                }
            }

            return new ConnectorResult(response);
        }

        public async Task<ConnectorResult> ThumbsAsync(IEnumerable<FullPath> paths)
        {
            var response = new ThumbsResponseModel();
            foreach (var path in paths)
            {
                response.Images.Add(path.HashedTarget, await path.RootVolume.GenerateThumbHashAsync(path.File));
                //response.Images.Add(target, path.Root.GenerateThumbHash(path.File) + path.File.Extension); // 2018.02.23: Fix
            }
            return new ConnectorResult(response);
        }

        public async Task<ConnectorResult> TreeAsync(FullPath path)
        {
            var response = new TreeResponseModel();
            foreach (var item in await path.Directory.GetDirectoriesAsync())
            {
                if (!item.Attributes.HasFlag(FileAttributes.Hidden))
                {
                    response.Tree.Add(await BaseModel.CreateAsync(item, path.RootVolume));
                }
            }
            return new ConnectorResult(response);
        }

        public async Task<ConnectorResult> UploadAsync(FullPath path, IList<FileContent> files, bool? overwrite, IEnumerable<FullPath> uploadPaths, IEnumerable<string> renames, string suffix)
        {
            var response = new AddResponseModel();

            if (path.RootVolume.MaxUploadSize.HasValue)
            {
                foreach (var file in files)
                {
                    if (file.Length > path.RootVolume.MaxUploadSize.Value)
                    {
                        return new ConnectorResult("errFileMaxSize");
                    }
                }
            }

            foreach (string rename in renames)
            {
                var fileInfo = new FileInfo(Path.Combine(path.Directory.FullName, rename));
                string destination = Path.Combine(path.Directory.FullName, $"{Path.GetFileNameWithoutExtension(rename)}{suffix}{Path.GetExtension(rename)}");
                fileInfo.MoveTo(destination);
                response.Added.Add(await BaseModel.CreateAsync(new FileSystemFile(destination), path.RootVolume));
            }

            foreach (var uploadPath in uploadPaths)
            {
                var directory = uploadPath.Directory;
                while (directory.FullName != path.RootVolume.RootDirectory)
                {
                    response.Added.Add(await BaseModel.CreateAsync(new FileSystemDirectory(directory.FullName), path.RootVolume));
                    directory = directory.Parent;
                }
            }

            int i = 0;
            foreach (var file in files)
            {
                string destination = uploadPaths.Count() > i ? uploadPaths.ElementAt(i).Directory.FullName : path.Directory.FullName;
                var fileInfo = new FileInfo(Path.Combine(destination, Path.GetFileName(file.FileName)));

                if (fileInfo.Exists)
                {
                    if (overwrite ?? path.RootVolume.UploadOverwrite)
                    {
                        fileInfo.Delete();
                        using (var fileStream = File.OpenWrite(fileInfo.FullName))
                        {
                            await file.ContentStream.CopyToAsync(fileStream);
                        }
                        response.Added.Add(await BaseModel.CreateAsync(new FileSystemFile(fileInfo.FullName), path.RootVolume));
                    }
                    else
                    {
                        string newName = CreateNameForCopy(fileInfo, suffix);
                        using (var fileStream = File.OpenWrite(Path.Combine(fileInfo.DirectoryName, newName)))
                        {
                            await file.ContentStream.CopyToAsync(fileStream);
                        }
                        response.Added.Add(await BaseModel.CreateAsync(new FileSystemFile(newName), path.RootVolume));
                    }
                }
                else
                {
                    using (var fileStream = File.OpenWrite(fileInfo.FullName))
                    {
                        await file.ContentStream.CopyToAsync(fileStream);
                    }
                    response.Added.Add(await BaseModel.CreateAsync(new FileSystemFile(fileInfo.FullName), path.RootVolume));
                }

                i++;
            }
            return new ConnectorResult(response);
        }

        #endregion IDriver Members

        private static string CreateNameForCopy(FileInfo file, string suffix)
        {
            string parentPath = file.DirectoryName;
            string name = Path.GetFileNameWithoutExtension(file.Name);
            string extension = file.Extension;

            if (string.IsNullOrEmpty(suffix))
            {
                suffix = "copy";
            }

            string newName = $"{parentPath}{Path.DirectorySeparatorChar}{name} {suffix}{extension}";
            if (!File.Exists(newName))
            {
                return newName;
            }
            else
            {
                for (int i = 1; i < 10; i++)
                {
                    newName = $"{parentPath}{Path.DirectorySeparatorChar}{name} {suffix} {i}{extension}";
                    if (!File.Exists(newName))
                    {
                        return newName;
                    }
                }
            }

            return $"{parentPath}{Path.DirectorySeparatorChar}{name} {suffix} {Guid.NewGuid()}{extension}";
        }

        private void DirectoryCopy(string sourceDirName, string destDirName, bool copySubDirs)
        {
            DirectoryInfo sourceDir = new DirectoryInfo(sourceDirName);
            DirectoryInfo[] dirs = sourceDir.GetDirectories();

            // If the source directory does not exist, throw an exception.
            if (!sourceDir.Exists)
            {
                throw new DirectoryNotFoundException("Source directory does not exist or could not be found: " + sourceDir.FullName);
            }

            // If the destination directory does not exist, create it.
            if (!Directory.Exists(destDirName))
            {
                Directory.CreateDirectory(destDirName);
            }

            // Get the file contents of the directory to copy.
            FileInfo[] files = sourceDir.GetFiles();

            foreach (FileInfo file in files)
            {
                // Create the path to the new copy of the file.
                string temppath = Path.Combine(destDirName, file.Name);

                // Copy the file.
                file.CopyTo(temppath, false);
            }

            // If copySubDirs is true, copy the subdirectories.
            if (copySubDirs)
            {
                foreach (DirectoryInfo subdir in dirs)
                {
                    // Create the subdirectory.
                    string temppath = Path.Combine(destDirName, subdir.Name);

                    // Copy the subdirectories.
                    DirectoryCopy(subdir.FullName, temppath, copySubDirs);
                }
            }
        }

        private SizeResponseModel DirectorySizeAndCount(DirectoryInfo d)
        {
            var response = new SizeResponseModel();

            // Add file sizes.
            foreach (var file in d.GetFiles())
            {
                response.FileCount++;
                response.Size += file.Length;
            }

            // Add subdirectory sizes.
            foreach (var directory in d.GetDirectories())
            {
                response.DirectoryCount++;

                var subdir = DirectorySizeAndCount(directory);
                response.DirectoryCount += subdir.DirectoryCount;
                response.FileCount += subdir.FileCount;
                response.Size += subdir.Size;
            }

            return response;
        }

        private async Task RemoveThumbsAsync(FullPath path)
        {
            if (path.IsDirectory)
            {
                string thumbPath = path.RootVolume.GetExistingThumbPath(path.Directory);
                if (!string.IsNullOrEmpty(thumbPath) && Directory.Exists(thumbPath))
                {
                    Directory.Delete(thumbPath, true);
                }
            }
            else
            {
                string thumbPath = await path.RootVolume.GetExistingThumbPathAsync(path.File);
                if (!string.IsNullOrEmpty(thumbPath) && File.Exists(thumbPath))
                {
                    File.Delete(thumbPath);
                }
            }
        }
    }
}
﻿using System;
using System.IO;
using System.Threading.Tasks;
using elFinder.AspNet.Helpers;
using elFinder.AspNet.Models;

namespace elFinder.AspNet.Drivers.FileSystem
{
    public class FileSystemFile : IFile
    {
        private readonly string filePath;

        #region Constructors

        public FileSystemFile(string filePath)
            : this(new FileInfo(filePath))
        {
        }

        public FileSystemFile(FileInfo fileInfo)
        {
            filePath = fileInfo.FullName;
            Name = fileInfo.Name;
            FullName = fileInfo.FullName;
            DirectoryName = fileInfo.DirectoryName;
            Extension = fileInfo.Extension;
        }

        #endregion Constructors

        #region IFile Members

        public FileAttributes Attributes
        {
            get => File.GetAttributes(filePath);
            set => File.SetAttributes(filePath, value);
        }

        public IDirectory Directory => new FileSystemDirectory(new FileInfo(filePath).Directory);

        public string DirectoryName { get; private set; }

        public Task<bool> ExistsAsync => Task.FromResult(File.Exists(filePath));

        public string Extension { get; private set; }

        public string FullName { get; private set; }

        public Task<DateTime> LastWriteTimeUtcAsync => Task.FromResult(File.GetLastWriteTimeUtc(filePath));

        public Task<long> LengthAsync => Task.FromResult(new FileInfo(filePath).Length);

        public string Name { get; private set; }

        public MimeType MimeType => MimeHelper.GetMimeType(Extension);

        public IFile Open(string path)
        {
            return new FileSystemFile(path);
        }

        public Task<Stream> CreateAsync()
        {
            EnsureGarbageCollectorCalled();
            using (var stream = File.Create(filePath))
            {
                return Task.FromResult(stream as Stream);
            }
        }

        public Task DeleteAsync()
        {
            EnsureGarbageCollectorCalled();
            File.Delete(filePath);
            return Task.FromResult(0);
        }

        public Task<Stream> OpenReadAsync()
        {
            EnsureGarbageCollectorCalled();
            return Task.FromResult(File.OpenRead(filePath) as Stream);
        }

        public Task PutAsync(string content)
        {
            EnsureGarbageCollectorCalled();
            File.WriteAllText(FullName, content);
            return Task.FromResult(0);
        }

        public Task PutAsync(Stream stream)
        {
            EnsureGarbageCollectorCalled();
            using (var destination = File.OpenWrite(filePath))
            {
                stream.CopyTo(destination);
            }

            return Task.FromResult(0);
        }

        #endregion IFile Members

        public void MoveTo(string destFileName)
        {
            File.Move(filePath, destFileName);
        }

        // Bug Fix: https://stackoverflow.com/questions/13262548/delete-a-file-being-used-by-another-process/21137207#21137207
        private static void EnsureGarbageCollectorCalled()
        {
            GC.Collect();
            GC.WaitForPendingFinalizers();
        }
    }
}
﻿using System;
using System.Collections.Generic;
using System.IO;
using System.Threading.Tasks;

namespace elFinder.AspNet.Drivers
{
    public interface IDirectory
    {
        FileAttributes Attributes { get; set; }

        Task<bool> ExistsAsync { get; }

        string FullName { get; }

        Task<DateTime> LastWriteTimeUtcAsync { get; }

        // Properties
        string Name { get; }

        IDirectory Parent { get; }

        // Functions
        Task CreateAsync();

        Task DeleteAsync();

        Task<IEnumerable<IDirectory>> GetDirectoriesAsync();

        Task<IEnumerable<IDirectory>> GetDirectoriesAsync(string pattern);

        Task<IEnumerable<IFile>> GetFilesAsync(IEnumerable<string> mimeTypes);

        Task<IEnumerable<IFile>> GetFilesAsync(IEnumerable<string> mimeTypes, string pattern);
    }
}
﻿using elFinder.AspNet.Models;
using System.Collections.Generic;
using System.Threading.Tasks;

namespace elFinder.AspNet
{
    public interface IDriver
    {
        Task<ConnectorResult> ArchiveAsync(FullPath parentPath, IEnumerable<FullPath> paths, string filename, string mimeType);

        Task<ConnectorResult> CropAsync(FullPath path, int x, int y, int width, int height);

        Task<ConnectorResult> DimAsync(FullPath path);

        Task<ConnectorResult> DuplicateAsync(IEnumerable<FullPath> paths);

        Task<ConnectorResult> ExtractAsync(FullPath fullPath, bool newFolder);

        Task<ConnectorResult> FileAsync(FullPath path, bool download);

        Task<ConnectorResult> GetAsync(FullPath path);

        Task<ConnectorResult> InitAsync(FullPath path, IEnumerable<string> mimeTypes);

        Task<ConnectorResult> ListAsync(FullPath path, IEnumerable<string> intersect, IEnumerable<string> mimeTypes);

        Task<ConnectorResult> MakeDirAsync(FullPath path, string name, IEnumerable<string> dirs);

        Task<ConnectorResult> MakeFileAsync(FullPath path, string name);

        Task<ConnectorResult> OpenAsync(FullPath path, bool tree, IEnumerable<string> mimeTypes);

        Task<ConnectorResult> ParentsAsync(FullPath path);

        Task<FullPath> ParsePathAsync(string target);

        Task<ConnectorResult> PasteAsync(FullPath dest, IEnumerable<FullPath> paths, bool isCut, IEnumerable<string> renames, string suffix);

        Task<ConnectorResult> PutAsync(FullPath path, string content);

        Task<ConnectorResult> PutAsync(FullPath path, byte[] content);

        Task<ConnectorResult> RemoveAsync(IEnumerable<FullPath> paths);

        Task<ConnectorResult> RenameAsync(FullPath path, string name);

        Task<ConnectorResult> ResizeAsync(FullPath path, int width, int height);

        Task<ConnectorResult> RotateAsync(FullPath path, int degree);

        Task<ConnectorResult> SearchAsync(FullPath path, string query, IEnumerable<string> mimeTypes);

        Task<ConnectorResult> SizeAsync(IEnumerable<FullPath> paths);

        Task<ConnectorResult> ThumbsAsync(IEnumerable<FullPath> paths);

        Task<ConnectorResult> TreeAsync(FullPath path);

        Task<ConnectorResult> UploadAsync(FullPath path, IList<FileContent> files, bool? overwrite, IEnumerable<FullPath> uploadPaths, IEnumerable<string> renames, string suffix);
    }
}
﻿using System;
using System.IO;
using System.Threading.Tasks;
using elFinder.AspNet.Models;

namespace elFinder.AspNet.Drivers
{
    public interface IFile
    {
        FileAttributes Attributes { get; set; }

        IDirectory Directory { get; }

        string DirectoryName { get; }

        Task<bool> ExistsAsync { get; }

        string Extension { get; }

        string FullName { get; }

        Task<DateTime> LastWriteTimeUtcAsync { get; }

        Task<long> LengthAsync { get; }

        string Name { get; }

        MimeType MimeType { get; }

        IFile Open(string path);

        Task<Stream> CreateAsync();

        Task DeleteAsync();

        Task<Stream> OpenReadAsync();

        Task PutAsync(string content);

        Task PutAsync(Stream stream);
    }
}
﻿using System;
using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks;

namespace elFinder.AspNet.Drivers
{
    public static class IFileExtensions
    {
        //private static readonly Encoder utf8Encoder = Encoding.UTF8.GetEncoder();
        private static readonly MD5 md5 = MD5.Create();

        public static async Task<string> GetFileMd5Async(this IFile file)
        {
            string fileName = file.Name;
            DateTime modified = await file.LastWriteTimeUtcAsync;

            fileName += modified.ToFileTimeUtc();
            var bytes = Encoding.UTF8.GetBytes(fileName);
            return BitConverter.ToString(md5.ComputeHash(bytes)).Replace("-", string.Empty);

            // OLD
            //char[] fileNameChars = fileName.ToCharArray();
            //byte[] buffer = new byte[utf8Encoder.GetByteCount(fileNameChars, 0, fileName.Length, true)];
            //utf8Encoder.GetBytes(fileNameChars, 0, fileName.Length, buffer, 0, true);

            //return BitConverter.ToString(md5.ComputeHash(buffer)).Replace("-", string.Empty);
        }
    }
}
﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace elFinder.AspNet
{
#if NETSTANDARD2_0
    public static class Extensions
    {
        public static TValue GetValueOrDefault<TKey, TValue>(this IDictionary<TKey, TValue> dictionary, TKey key)
        {
            return dictionary.GetValueOrDefault(key, default(TValue));
        }

        public static TValue GetValueOrDefault<TKey, TValue>(this IDictionary<TKey, TValue> dictionary, TKey key, TValue defaultValue)
        {
            if (dictionary == null)
            {
                throw new ArgumentNullException(nameof(dictionary));
            }

            TValue value;
            return dictionary.TryGetValue(key, out value) ? value : defaultValue;
        }
    }
#endif
}
﻿using System;
using System.IO;
using System.Threading.Tasks;
using elFinder.AspNet.Drawing;
using elFinder.AspNet.Drivers;
using elFinder.AspNet.Helpers;

namespace elFinder.AspNet
{
    public class FullPath
    {
        #region Constructors

        public FullPath(RootVolume root, IFile file, string hashedTarget) : this(root, file.FullName, hashedTarget, false)
        {
            File = file ?? throw new ArgumentNullException("file", "IFile cannot be null");
        }

        public FullPath(RootVolume root, IDirectory dir, string hashedTarget) : this(root, dir.FullName, hashedTarget, true)
        {
            Directory = dir ?? throw new ArgumentNullException("dir", "IDirectory cannot be null");
        }

        public FullPath(RootVolume root, string path, string hashedTarget, bool isDirectory)
        {
            RootVolume = root ?? throw new ArgumentNullException("root", "RootVolume cannot be null");
            HashedTarget = hashedTarget;
            IsDirectory = isDirectory;

            if (path.StartsWith(root.RootDirectory))
            {
                if (path.Length == root.RootDirectory.Length)
                    RelativePath = string.Empty;
                else
                    RelativePath = path.Substring(root.RootDirectory.Length + 1);
            }
            else
            {
                throw new InvalidOperationException("path must be in the root directory or a subdirectory thereof");
            }
        }

        #endregion Constructors

        public IDirectory Directory { get; protected set; }

        public IFile File { get; protected set; }

        public string HashedTarget { get; set; }

        public bool IsDirectory { get; protected set; }

        public bool IsRoot { get; protected set; }

        public string RelativePath { get; protected set; }

        public RootVolume RootVolume { get; protected set; }

        public async Task<ImageWithMimeType> GenerateThumbnailAsync()
        {
            string name = File.FullName;
            for (int i = name.Length - 1; i >= 0; i--)
            {
                if (name[i] == '_')
                {
                    name = name.Substring(0, i);
                    break;
                }
            }

            string fullPath = $"{name}{File.Extension}";

            if (RootVolume.ThumbnailDirectory != null)
            {
                IFile thumbFile;
                if (File.FullName.StartsWith(RootVolume.ThumbnailDirectory))
                {
                    thumbFile = File;
                }
                else
                {
                    thumbFile = File.Open($"{RootVolume.ThumbnailDirectory}{RootVolume.DirectorySeparatorChar}{RelativePath}");
                }

                if (!await thumbFile.ExistsAsync)
                {
                    var thumbDir = thumbFile.Directory;
                    if (!await thumbDir.ExistsAsync)
                    {
                        await thumbDir.CreateAsync();
                        thumbDir.Attributes = FileAttributes.Hidden;
                    }

                    using (var original = await File.Open(fullPath).OpenReadAsync())
                    {
                        var thumb = RootVolume.PictureEditor.GenerateThumbnail(original, RootVolume.ThumbnailSize, true);
                        await thumbFile.PutAsync(thumb.ImageStream);
                        thumb.ImageStream.Position = 0;
                        return thumb;
                    }
                }
                else
                {
                    string mimeType = MimeHelper.GetMimeType(RootVolume.PictureEditor.ConvertThumbnailExtension(thumbFile.Extension));
                    return new ImageWithMimeType(mimeType, await thumbFile.OpenReadAsync());
                }
            }
            else
            {
                using (var original = await File.Open(fullPath).OpenReadAsync())
                {
                    return RootVolume.PictureEditor.GenerateThumbnail(original, RootVolume.ThumbnailSize, true);
                }
            }
        }
    }
}
﻿using System;
using System.Diagnostics;
using System.Text;

namespace elFinder.AspNet.Helpers
{
    public static class HttpEncoder
    {
        public static string DecodePath(string path)
        {
            return Encoding.UTF8.GetString(UrlTokenDecode(path));
        }

        public static string EncodePath(string path)
        {
            return UrlTokenEncode(Encoding.UTF8.GetBytes(path));
        }

        private static byte[] UrlTokenDecode(string input)
        {
            if (input == null)
            {
                throw new ArgumentNullException("input");
            }

            int len = input.Length;
            if (len < 1)
            {
                return new byte[0];
            }

            ///////////////////////////////////////////////////////////////////
            // Step 1: Calculate the number of padding chars to append to this string.
            //         The number of padding chars to append is stored in the last char of the string.
            int numPadChars = input[len - 1] - '0';
            if (numPadChars < 0 || numPadChars > 10)
            {
                return null;
            }

            ///////////////////////////////////////////////////////////////////
            // Step 2: Create array to store the chars (not including the last char)
            //          and the padding chars
            char[] base64Chars = new char[len - 1 + numPadChars];

            ////////////////////////////////////////////////////////
            // Step 3: Copy in the chars. Transform the "-" to "+", and "*" to "/"
            for (int iter = 0; iter < len - 1; iter++)
            {
                char c = input[iter];

                switch (c)
                {
                    case '-': base64Chars[iter] = '+'; break;
                    case '_': base64Chars[iter] = '/'; break;
                    default: base64Chars[iter] = c; break;
                }
            }

            ////////////////////////////////////////////////////////
            // Step 4: Add padding chars
            for (int iter = len - 1; iter < base64Chars.Length; iter++)
            {
                base64Chars[iter] = '=';
            }

            // Do the actual conversion
            return Convert.FromBase64CharArray(base64Chars, 0, base64Chars.Length);
        }

        private static string UrlTokenEncode(byte[] input)
        {
            if (input == null)
            {
                throw new ArgumentNullException("input");
            }
            if (input.Length < 1)
            {
                return string.Empty;
            }

            string base64Str = null;
            int endPos = 0;
            char[] base64Chars = null;

            ////////////////////////////////////////////////////////
            // Step 1: Do a Base64 encoding
            base64Str = Convert.ToBase64String(input);
            if (base64Str == null)
            {
                return null;
            }

            ////////////////////////////////////////////////////////
            // Step 2: Find how many padding chars are present in the end
            for (endPos = base64Str.Length; endPos > 0; endPos--)
            {
                if (base64Str[endPos - 1] != '=') // Found a non-padding char!
                {
                    break; // Stop here
                }
            }

            ////////////////////////////////////////////////////////
            // Step 3: Create char array to store all non-padding chars,
            //      plus a char to indicate how many padding chars are needed
            base64Chars = new char[endPos + 1];
            base64Chars[endPos] = (char)('0' + base64Str.Length - endPos); // Store a char at the end, to indicate how many padding chars are needed

            ////////////////////////////////////////////////////////
            // Step 3: Copy in the other chars. Transform the "+" to "-", and "/" to "_"
            for (int iter = 0; iter < endPos; iter++)
            {
                char c = base64Str[iter];

                switch (c)
                {
                    case '+': base64Chars[iter] = '-'; break;
                    case '/': base64Chars[iter] = '_'; break;
                    case '=': Debug.Assert(false); base64Chars[iter] = c; break;
                    default: base64Chars[iter] = c; break;
                }
            }
            return new string(base64Chars);
        }
    }
}
﻿namespace elFinder.AspNet.Helpers
{
    using elFinder.AspNet.Models;

    public static class MimeHelper
    {
        public static MimeType GetMimeType(string extension)
        {
            // TODO:
            //  1. Ensure all values from MimeTypes.txt are in MimeTypeMap and then delete MimeTypes.txt.
            //  2. Compare MimeTypeMap with: https://codingislove.com/list-mime-types-2016/
            //  3. Compare MimeTypeMap with: https://slick.pl/kb/htaccess/complete-list-mime-types/
            //  4. Consider modifying MimeTypeMap to return our custom MimeType struct, so that we don't need this MimeHelper class anymore

            string mimeType = MimeTypeMap.GetMimeType(extension);
            string[] split = mimeType.Split('/');
            return new MimeType { Type = split[0], Subtype = split[1] };
        }
    }
}
﻿// Taken from: https://github.com/samuelneff/MimeTypeMap
// Would have used a NuGet package, but there doesn't appear to be one...

using System;
using System.Collections.Generic;
using System.Linq;

namespace elFinder.AspNet.Helpers
{
    internal static class MimeTypeMap
    {
        private const string DefaultMimeType = "application/octet-stream";
        private const string Dot = ".";
        private static readonly Lazy<IDictionary<string, string>> mappings = new Lazy<IDictionary<string, string>>(BuildMappings);

        public static string GetExtension(string mimeType, bool throwErrorIfNotFound = true)
        {
            if (mimeType == null)
            {
                throw new ArgumentNullException(nameof(mimeType));
            }

            if (mimeType.StartsWith("."))
            {
                throw new ArgumentException("Requested mime type is not valid: " + mimeType);
            }

            if (mappings.Value.TryGetValue(mimeType, out string extension))
            {
                return extension;
            }

            if (throwErrorIfNotFound)
            {
                throw new ArgumentException("Requested mime type is not registered: " + mimeType);
            }

            return string.Empty;
        }

        public static string GetMimeType(string extension)
        {
            if (extension == null)
            {
                throw new ArgumentNullException(nameof(extension));
            }

            if (!extension.StartsWith(Dot))
            {
                extension = Dot + extension;
            }

            return mappings.Value.TryGetValue(extension, out string mime) ? mime : DefaultMimeType;
        }

        private static IDictionary<string, string> BuildMappings()
        {
            var mappings = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase)
            {
                #region Big freaking list of mime types

                // maps both ways,
                // extension -> mime type
                //   and
                // mime type -> extension
                //
                // any mime types on left side not pre-loaded on right side, are added automatically
                // some mime types can map to multiple extensions, so to get a deterministic mapping,
                // add those to the dictionary specifically
                //
                // combination of values from Windows 7 Registry and
                // from C:\Windows\System32\inetsrv\config\applicationHost.config
                // some added, including .7z and .dat
                //
                // Some added based on http://www.iana.org/assignments/media-types/media-types.xhtml
                // which lists mime types, but not extensions
                //
                {".323", "text/h323"},
                {".3g2", "video/3gpp2"},
                {".3gp", "video/3gpp"},
                {".3gp2", "video/3gpp2"},
                {".3gpp", "video/3gpp"},
                {".7z", "application/x-7z-compressed"},
                {".aa", "audio/audible"},
                {".AAC", "audio/aac"},
                {".aaf", "application/octet-stream"},
                {".aax", "audio/vnd.audible.aax"},
                {".ac3", "audio/ac3"},
                {".aca", "application/octet-stream"},
                {".accda", "application/msaccess.addin"},
                {".accdb", "application/msaccess"},
                {".accdc", "application/msaccess.cab"},
                {".accde", "application/msaccess"},
                {".accdr", "application/msaccess.runtime"},
                {".accdt", "application/msaccess"},
                {".accdw", "application/msaccess.webapplication"},
                {".accft", "application/msaccess.ftemplate"},
                {".acx", "application/internet-property-stream"},
                {".AddIn", "text/xml"},
                {".ade", "application/msaccess"},
                {".adobebridge", "application/x-bridge-url"},
                {".adp", "application/msaccess"},
                {".ADT", "audio/vnd.dlna.adts"},
                {".ADTS", "audio/aac"},
                {".afm", "application/octet-stream"},
                {".ai", "application/postscript"},
                {".aif", "audio/aiff"},
                {".aifc", "audio/aiff"},
                {".aiff", "audio/aiff"},
                {".air", "application/vnd.adobe.air-application-installer-package+zip"},
                {".amc", "application/mpeg"},
                {".anx", "application/annodex"},
                {".apk", "application/vnd.android.package-archive"},
                {".application", "application/x-ms-application"},
                {".art", "image/x-jg"},
                {".asa", "application/xml"},
                {".asax", "application/xml"},
                {".ascx", "application/xml"},
                {".asd", "application/octet-stream"},
                {".asf", "video/x-ms-asf"},
                {".ashx", "application/xml"},
                {".asi", "application/octet-stream"},
                {".asm", "text/plain"},
                {".asmx", "application/xml"},
                {".aspx", "application/xml"},
                {".asr", "video/x-ms-asf"},
                {".asx", "video/x-ms-asf"},
                {".atom", "application/atom+xml"},
                {".au", "audio/basic"},
                {".avi", "video/x-msvideo"},
                {".axa", "audio/annodex"},
                {".axs", "application/olescript"},
                {".axv", "video/annodex"},
                {".bas", "text/plain"},
                {".bcpio", "application/x-bcpio"},
                {".bin", "application/octet-stream"},
                {".bmp", "image/bmp"},
                {".c", "text/plain"},
                {".cab", "application/octet-stream"},
                {".caf", "audio/x-caf"},
                {".calx", "application/vnd.ms-office.calx"},
                {".cat", "application/vnd.ms-pki.seccat"},
                {".cc", "text/plain"},
                {".cd", "text/plain"},
                {".cdda", "audio/aiff"},
                {".cdf", "application/x-cdf"},
                {".cer", "application/x-x509-ca-cert"},
                {".cfg", "text/plain"},
                {".chm", "application/octet-stream"},
                {".class", "application/x-java-applet"},
                {".clp", "application/x-msclip"},
                {".cmd", "text/plain"},
                {".cmx", "image/x-cmx"},
                {".cnf", "text/plain"},
                {".cod", "image/cis-cod"},
                {".config", "application/xml"},
                {".contact", "text/x-ms-contact"},
                {".coverage", "application/xml"},
                {".cpio", "application/x-cpio"},
                {".cpp", "text/plain"},
                {".crd", "application/x-mscardfile"},
                {".crl", "application/pkix-crl"},
                {".crt", "application/x-x509-ca-cert"},
                {".cs", "text/plain"},
                {".csdproj", "text/plain"},
                {".csh", "application/x-csh"},
                {".csproj", "text/plain"},
                {".css", "text/css"},
                {".csv", "text/csv"},
                {".cur", "application/octet-stream"},
                {".cxx", "text/plain"},
                {".dat", "application/octet-stream"},
                {".datasource", "application/xml"},
                {".dbproj", "text/plain"},
                {".dcr", "application/x-director"},
                {".def", "text/plain"},
                {".deploy", "application/octet-stream"},
                {".der", "application/x-x509-ca-cert"},
                {".dgml", "application/xml"},
                {".dib", "image/bmp"},
                {".dif", "video/x-dv"},
                {".dir", "application/x-director"},
                {".disco", "text/xml"},
                {".divx", "video/divx"},
                {".dll", "application/x-msdownload"},
                {".dll.config", "text/xml"},
                {".dlm", "text/dlm"},
                {".doc", "application/msword"},
                {".docm", "application/vnd.ms-word.document.macroEnabled.12"},
                {".docx", "application/vnd.openxmlformats-officedocument.wordprocessingml.document"},
                {".dot", "application/msword"},
                {".dotm", "application/vnd.ms-word.template.macroEnabled.12"},
                {".dotx", "application/vnd.openxmlformats-officedocument.wordprocessingml.template"},
                {".dsp", "application/octet-stream"},
                {".dsw", "text/plain"},
                {".dtd", "text/xml"},
                {".dtsConfig", "text/xml"},
                {".dv", "video/x-dv"},
                {".dvi", "application/x-dvi"},
                {".dwf", "drawing/x-dwf"},
                {".dwg", "application/acad"},
                {".dwp", "application/octet-stream"},
                {".dxf", "application/x-dxf"},
                {".dxr", "application/x-director"},
                {".emf", "image/emf"},
                {".eml", "message/rfc822"},
                {".emz", "application/octet-stream"},
                {".eot", "application/vnd.ms-fontobject"},
                {".eps", "application/postscript"},
                {".es", "application/ecmascript"},
                {".etl", "application/etl"},
                {".etx", "text/x-setext"},
                {".evy", "application/envoy"},
                {".exe", "application/vnd.microsoft.portable-executable"},
                {".exe.config", "text/xml"},
                {".f4v", "video/mp4"},
                {".fdf", "application/vnd.fdf"},
                {".fif", "application/fractals"},
                {".filters", "application/xml"},
                {".fla", "application/octet-stream"},
                {".flac", "audio/flac"},
                {".flr", "x-world/x-vrml"},
                {".flv", "video/x-flv"},
                {".fsscript", "application/fsharp-script"},
                {".fsx", "application/fsharp-script"},
                {".generictest", "application/xml"},
                {".gif", "image/gif"},
                {".gpx", "application/gpx+xml"},
                {".group", "text/x-ms-group"},
                {".gsm", "audio/x-gsm"},
                {".gtar", "application/x-gtar"},
                {".gz", "application/x-gzip"},
                {".h", "text/plain"},
                {".hdf", "application/x-hdf"},
                {".hdml", "text/x-hdml"},
                {".hhc", "application/x-oleobject"},
                {".hhk", "application/octet-stream"},
                {".hhp", "application/octet-stream"},
                {".hlp", "application/winhlp"},
                {".hpp", "text/plain"},
                {".hqx", "application/mac-binhex40"},
                {".hta", "application/hta"},
                {".htc", "text/x-component"},
                {".htm", "text/html"},
                {".html", "text/html"},
                {".htt", "text/webviewhtml"},
                {".hxa", "application/xml"},
                {".hxc", "application/xml"},
                {".hxd", "application/octet-stream"},
                {".hxe", "application/xml"},
                {".hxf", "application/xml"},
                {".hxh", "application/octet-stream"},
                {".hxi", "application/octet-stream"},
                {".hxk", "application/xml"},
                {".hxq", "application/octet-stream"},
                {".hxr", "application/octet-stream"},
                {".hxs", "application/octet-stream"},
                {".hxt", "text/html"},
                {".hxv", "application/xml"},
                {".hxw", "application/octet-stream"},
                {".hxx", "text/plain"},
                {".i", "text/plain"},
                {".ical", "text/calendar"},
                {".icalendar", "text/calendar"},
                {".ico", "image/x-icon"},
                {".ics", "text/calendar"},
                {".idl", "text/plain"},
                {".ief", "image/ief"},
                {".ifb", "text/calendar"},
                {".iii", "application/x-iphone"},
                {".inc", "text/plain"},
                {".inf", "application/octet-stream"},
                {".ini", "text/plain"},
                {".inl", "text/plain"},
                {".ins", "application/x-internet-signup"},
                {".ipa", "application/x-itunes-ipa"},
                {".ipg", "application/x-itunes-ipg"},
                {".ipproj", "text/plain"},
                {".ipsw", "application/x-itunes-ipsw"},
                {".iqy", "text/x-ms-iqy"},
                {".isma", "application/octet-stream"},
                {".ismv", "application/octet-stream"},
                {".isp", "application/x-internet-signup"},
                {".ite", "application/x-itunes-ite"},
                {".itlp", "application/x-itunes-itlp"},
                {".itms", "application/x-itunes-itms"},
                {".itpc", "application/x-itunes-itpc"},
                {".IVF", "video/x-ivf"},
                {".jar", "application/java-archive"},
                {".java", "application/octet-stream"},
                {".jck", "application/liquidmotion"},
                {".jcz", "application/liquidmotion"},
                {".jfif", "image/pjpeg"},
                {".jnlp", "application/x-java-jnlp-file"},
                {".jpb", "application/octet-stream"},
                {".jpe", "image/jpeg"},
                {".jpeg", "image/jpeg"},
                {".jpg", "image/jpeg"},
                {".js", "application/javascript"},
                {".json", "application/json"},
                {".jsx", "text/jscript"},
                {".jsxbin", "text/plain"},
                {".latex", "application/x-latex"},
                {".library-ms", "application/windows-library+xml"},
                {".lit", "application/x-ms-reader"},
                {".loadtest", "application/xml"},
                {".lpk", "application/octet-stream"},
                {".lsf", "video/x-la-asf"},
                {".lst", "text/plain"},
                {".lsx", "video/x-la-asf"},
                {".lzh", "application/octet-stream"},
                {".m13", "application/x-msmediaview"},
                {".m14", "application/x-msmediaview"},
                {".m1v", "video/mpeg"},
                {".m2t", "video/vnd.dlna.mpeg-tts"},
                {".m2ts", "video/vnd.dlna.mpeg-tts"},
                {".m2v", "video/mpeg"},
                {".m3u", "audio/x-mpegurl"},
                {".m3u8", "audio/x-mpegurl"},
                {".m4a", "audio/m4a"},
                {".m4b", "audio/m4b"},
                {".m4p", "audio/m4p"},
                {".m4r", "audio/x-m4r"},
                {".m4v", "video/x-m4v"},
                {".mac", "image/x-macpaint"},
                {".mak", "text/plain"},
                {".man", "application/x-troff-man"},
                {".manifest", "application/x-ms-manifest"},
                {".map", "text/plain"},
                {".master", "application/xml"},
                {".mbox", "application/mbox"},
                {".mda", "application/msaccess"},
                {".mdb", "application/x-msaccess"},
                {".mde", "application/msaccess"},
                {".mdp", "application/octet-stream"},
                {".me", "application/x-troff-me"},
                {".mfp", "application/x-shockwave-flash"},
                {".mht", "message/rfc822"},
                {".mhtml", "message/rfc822"},
                {".mid", "audio/mid"},
                {".midi", "audio/mid"},
                {".mix", "application/octet-stream"},
                {".mk", "text/plain"},
                {".mk3d", "video/x-matroska-3d"},
                {".mka", "audio/x-matroska"},
                {".mkv", "video/x-matroska"},
                {".mmf", "application/x-smaf"},
                {".mno", "text/xml"},
                {".mny", "application/x-msmoney"},
                {".mod", "video/mpeg"},
                {".mov", "video/quicktime"},
                {".movie", "video/x-sgi-movie"},
                {".mp2", "video/mpeg"},
                {".mp2v", "video/mpeg"},
                {".mp3", "audio/mpeg"},
                {".mp4", "video/mp4"},
                {".mp4v", "video/mp4"},
                {".mpa", "video/mpeg"},
                {".mpe", "video/mpeg"},
                {".mpeg", "video/mpeg"},
                {".mpf", "application/vnd.ms-mediapackage"},
                {".mpg", "video/mpeg"},
                {".mpp", "application/vnd.ms-project"},
                {".mpv2", "video/mpeg"},
                {".mqv", "video/quicktime"},
                {".ms", "application/x-troff-ms"},
                {".msg", "application/vnd.ms-outlook"},
                {".msi", "application/octet-stream"},
                {".mso", "application/octet-stream"},
                {".mts", "video/vnd.dlna.mpeg-tts"},
                {".mtx", "application/xml"},
                {".mvb", "application/x-msmediaview"},
                {".mvc", "application/x-miva-compiled"},
                {".mxf", "application/mxf"},
                {".mxp", "application/x-mmxp"},
                {".nc", "application/x-netcdf"},
                {".nsc", "video/x-ms-asf"},
                {".nws", "message/rfc822"},
                {".ocx", "application/octet-stream"},
                {".oda", "application/oda"},
                {".odb", "application/vnd.oasis.opendocument.database"},
                {".odc", "application/vnd.oasis.opendocument.chart"},
                {".odf", "application/vnd.oasis.opendocument.formula"},
                {".odg", "application/vnd.oasis.opendocument.graphics"},
                {".odh", "text/plain"},
                {".odi", "application/vnd.oasis.opendocument.image"},
                {".odl", "text/plain"},
                {".odm", "application/vnd.oasis.opendocument.text-master"},
                {".odp", "application/vnd.oasis.opendocument.presentation"},
                {".ods", "application/vnd.oasis.opendocument.spreadsheet"},
                {".odt", "application/vnd.oasis.opendocument.text"},
                {".oga", "audio/ogg"},
                {".ogg", "audio/ogg"},
                {".ogv", "video/ogg"},
                {".ogx", "application/ogg"},
                {".one", "application/onenote"},
                {".onea", "application/onenote"},
                {".onepkg", "application/onenote"},
                {".onetmp", "application/onenote"},
                {".onetoc", "application/onenote"},
                {".onetoc2", "application/onenote"},
                {".opus", "audio/ogg"},
                {".orderedtest", "application/xml"},
                {".osdx", "application/opensearchdescription+xml"},
                {".otf", "application/font-sfnt"},
                {".otg", "application/vnd.oasis.opendocument.graphics-template"},
                {".oth", "application/vnd.oasis.opendocument.text-web"},
                {".otp", "application/vnd.oasis.opendocument.presentation-template"},
                {".ots", "application/vnd.oasis.opendocument.spreadsheet-template"},
                {".ott", "application/vnd.oasis.opendocument.text-template"},
                {".oxt", "application/vnd.openofficeorg.extension"},
                {".p10", "application/pkcs10"},
                {".p12", "application/x-pkcs12"},
                {".p7b", "application/x-pkcs7-certificates"},
                {".p7c", "application/pkcs7-mime"},
                {".p7m", "application/pkcs7-mime"},
                {".p7r", "application/x-pkcs7-certreqresp"},
                {".p7s", "application/pkcs7-signature"},
                {".pbm", "image/x-portable-bitmap"},
                {".pcast", "application/x-podcast"},
                {".pct", "image/pict"},
                {".pcx", "application/octet-stream"},
                {".pcz", "application/octet-stream"},
                {".pdf", "application/pdf"},
                {".pfb", "application/octet-stream"},
                {".pfm", "application/octet-stream"},
                {".pfx", "application/x-pkcs12"},
                {".pgm", "image/x-portable-graymap"},
                {".pic", "image/pict"},
                {".pict", "image/pict"},
                {".pkgdef", "text/plain"},
                {".pkgundef", "text/plain"},
                {".pko", "application/vnd.ms-pki.pko"},
                {".pls", "audio/scpls"},
                {".pma", "application/x-perfmon"},
                {".pmc", "application/x-perfmon"},
                {".pml", "application/x-perfmon"},
                {".pmr", "application/x-perfmon"},
                {".pmw", "application/x-perfmon"},
                {".png", "image/png"},
                {".pnm", "image/x-portable-anymap"},
                {".pnt", "image/x-macpaint"},
                {".pntg", "image/x-macpaint"},
                {".pnz", "image/png"},
                {".pot", "application/vnd.ms-powerpoint"},
                {".potm", "application/vnd.ms-powerpoint.template.macroEnabled.12"},
                {".potx", "application/vnd.openxmlformats-officedocument.presentationml.template"},
                {".ppa", "application/vnd.ms-powerpoint"},
                {".ppam", "application/vnd.ms-powerpoint.addin.macroEnabled.12"},
                {".ppm", "image/x-portable-pixmap"},
                {".pps", "application/vnd.ms-powerpoint"},
                {".ppsm", "application/vnd.ms-powerpoint.slideshow.macroEnabled.12"},
                {".ppsx", "application/vnd.openxmlformats-officedocument.presentationml.slideshow"},
                {".ppt", "application/vnd.ms-powerpoint"},
                {".pptm", "application/vnd.ms-powerpoint.presentation.macroEnabled.12"},
                {".pptx", "application/vnd.openxmlformats-officedocument.presentationml.presentation"},
                {".prf", "application/pics-rules"},
                {".prm", "application/octet-stream"},
                {".prx", "application/octet-stream"},
                {".ps", "application/postscript"},
                {".psc1", "application/PowerShell"},
                {".psd", "application/octet-stream"},
                {".psess", "application/xml"},
                {".psm", "application/octet-stream"},
                {".psp", "application/octet-stream"},
                {".pst", "application/vnd.ms-outlook"},
                {".pub", "application/x-mspublisher"},
                {".pwz", "application/vnd.ms-powerpoint"},
                {".qht", "text/x-html-insertion"},
                {".qhtm", "text/x-html-insertion"},
                {".qt", "video/quicktime"},
                {".qti", "image/x-quicktime"},
                {".qtif", "image/x-quicktime"},
                {".qtl", "application/x-quicktimeplayer"},
                {".qxd", "application/octet-stream"},
                {".ra", "audio/x-pn-realaudio"},
                {".ram", "audio/x-pn-realaudio"},
                {".rar", "application/x-rar-compressed"},
                {".ras", "image/x-cmu-raster"},
                {".rat", "application/rat-file"},
                {".rc", "text/plain"},
                {".rc2", "text/plain"},
                {".rct", "text/plain"},
                {".rdlc", "application/xml"},
                {".reg", "text/plain"},
                {".resx", "application/xml"},
                {".rf", "image/vnd.rn-realflash"},
                {".rgb", "image/x-rgb"},
                {".rgs", "text/plain"},
                {".rm", "application/vnd.rn-realmedia"},
                {".rmi", "audio/mid"},
                {".rmp", "application/vnd.rn-rn_music_package"},
                {".rmvb", "application/vnd.rn-realmedia-vbr"},
                {".roff", "application/x-troff"},
                {".rpm", "audio/x-pn-realaudio-plugin"},
                {".rqy", "text/x-ms-rqy"},
                {".rtf", "application/rtf"},
                {".rtx", "text/richtext"},
                {".ruleset", "application/xml"},
                {".rvt", "application/octet-stream"},
                {".s", "text/plain"},
                {".safariextz", "application/x-safari-safariextz"},
                {".scd", "application/x-msschedule"},
                {".scr", "text/plain"},
                {".sct", "text/scriptlet"},
                {".sd2", "audio/x-sd2"},
                {".sdp", "application/sdp"},
                {".sea", "application/octet-stream"},
                {".searchConnector-ms", "application/windows-search-connector+xml"},
                {".setpay", "application/set-payment-initiation"},
                {".setreg", "application/set-registration-initiation"},
                {".settings", "application/xml"},
                {".sgimb", "application/x-sgimb"},
                {".sgml", "text/sgml"},
                {".sh", "application/x-sh"},
                {".shar", "application/x-shar"},
                {".shtml", "text/html"},
                {".sit", "application/x-stuffit"},
                {".sitemap", "application/xml"},
                {".skin", "application/xml"},
                {".skp", "application/x-koan"},
                {".sldm", "application/vnd.ms-powerpoint.slide.macroEnabled.12"},
                {".sldx", "application/vnd.openxmlformats-officedocument.presentationml.slide"},
                {".slk", "application/vnd.ms-excel"},
                {".sln", "text/plain"},
                {".slupkg-ms", "application/x-ms-license"},
                {".smd", "audio/x-smd"},
                {".smi", "application/octet-stream"},
                {".smx", "audio/x-smd"},
                {".smz", "audio/x-smd"},
                {".snd", "audio/basic"},
                {".snippet", "application/xml"},
                {".snp", "application/octet-stream"},
                {".sol", "text/plain"},
                {".sor", "text/plain"},
                {".spc", "application/x-pkcs7-certificates"},
                {".spl", "application/futuresplash"},
                {".spx", "audio/ogg"},
                {".src", "application/x-wais-source"},
                {".srf", "text/plain"},
                {".SSISDeploymentManifest", "text/xml"},
                {".ssm", "application/streamingmedia"},
                {".sst", "application/vnd.ms-pki.certstore"},
                {".step", "application/step"},
                {".stl", "application/vnd.ms-pki.stl"},
                {".stp", "application/step"},
                {".sv4cpio", "application/x-sv4cpio"},
                {".sv4crc", "application/x-sv4crc"},
                {".svc", "application/xml"},
                {".svg", "image/svg+xml"},
                {".swf", "application/x-shockwave-flash"},
                {".t", "application/x-troff"},
                {".tar", "application/x-tar"},
                {".tcl", "application/x-tcl"},
                {".testrunconfig", "application/xml"},
                {".testsettings", "application/xml"},
                {".tex", "application/x-tex"},
                {".texi", "application/x-texinfo"},
                {".texinfo", "application/x-texinfo"},
                {".tgz", "application/x-compressed"},
                {".thmx", "application/vnd.ms-officetheme"},
                {".thn", "application/octet-stream"},
                {".tif", "image/tiff"},
                {".tiff", "image/tiff"},
                {".tlh", "text/plain"},
                {".tli", "text/plain"},
                {".toc", "application/octet-stream"},
                {".tr", "application/x-troff"},
                {".trm", "application/x-msterminal"},
                {".trx", "application/xml"},
                {".ts", "video/vnd.dlna.mpeg-tts"},
                {".tsv", "text/tab-separated-values"},
                {".ttf", "application/font-sfnt"},
                {".tts", "video/vnd.dlna.mpeg-tts"},
                {".txt", "text/plain"},
                {".u32", "application/octet-stream"},
                {".uls", "text/iuls"},
                {".url", "text/uri-list"},
                {".user", "text/plain"},
                {".ustar", "application/x-ustar"},
                {".vb", "text/plain"},
                {".vbdproj", "text/plain"},
                {".vbk", "video/mpeg"},
                {".vbproj", "text/plain"},
                {".vbs", "text/vbscript"},
                {".vcf", "text/x-vcard"},
                {".vcproj", "application/xml"},
                {".vcs", "text/plain"},
                {".vcxproj", "application/xml"},
                {".vddproj", "text/plain"},
                {".vdp", "text/plain"},
                {".vdproj", "text/plain"},
                {".vdx", "application/vnd.ms-visio.viewer"},
                {".vml", "text/xml"},
                {".vscontent", "application/xml"},
                {".vsct", "text/xml"},
                {".vsd", "application/vnd.visio"},
                {".vsi", "application/ms-vsi"},
                {".vsix", "application/vsix"},
                {".vsixlangpack", "text/xml"},
                {".vsixmanifest", "text/xml"},
                {".vsmdi", "application/xml"},
                {".vspscc", "text/plain"},
                {".vss", "application/vnd.visio"},
                {".vsscc", "text/plain"},
                {".vssettings", "text/xml"},
                {".vssscc", "text/plain"},
                {".vst", "application/vnd.visio"},
                {".vstemplate", "text/xml"},
                {".vsto", "application/x-ms-vsto"},
                {".vsw", "application/vnd.visio"},
                {".vsx", "application/vnd.visio"},
                {".vtt", "text/vtt"},
                {".vtx", "application/vnd.visio"},
                {".wasm", "application/wasm"},
                {".wav", "audio/wav"},
                {".wave", "audio/wav"},
                {".wax", "audio/x-ms-wax"},
                {".wbk", "application/msword"},
                {".wbmp", "image/vnd.wap.wbmp"},
                {".wcm", "application/vnd.ms-works"},
                {".wdb", "application/vnd.ms-works"},
                {".wdp", "image/vnd.ms-photo"},
                {".webarchive", "application/x-safari-webarchive"},
                {".webm", "video/webm"},
                {".webp", "image/webp"}, /* https://en.wikipedia.org/wiki/WebP */
                {".webtest", "application/xml"},
                {".wiq", "application/xml"},
                {".wiz", "application/msword"},
                {".wks", "application/vnd.ms-works"},
                {".WLMP", "application/wlmoviemaker"},
                {".wlpginstall", "application/x-wlpg-detect"},
                {".wlpginstall3", "application/x-wlpg3-detect"},
                {".wm", "video/x-ms-wm"},
                {".wma", "audio/x-ms-wma"},
                {".wmd", "application/x-ms-wmd"},
                {".wmf", "application/x-msmetafile"},
                {".wml", "text/vnd.wap.wml"},
                {".wmlc", "application/vnd.wap.wmlc"},
                {".wmls", "text/vnd.wap.wmlscript"},
                {".wmlsc", "application/vnd.wap.wmlscriptc"},
                {".wmp", "video/x-ms-wmp"},
                {".wmv", "video/x-ms-wmv"},
                {".wmx", "video/x-ms-wmx"},
                {".wmz", "application/x-ms-wmz"},
                {".woff", "application/font-woff"},
                {".woff2", "application/font-woff2"},
                {".wpl", "application/vnd.ms-wpl"},
                {".wps", "application/vnd.ms-works"},
                {".wri", "application/x-mswrite"},
                {".wrl", "x-world/x-vrml"},
                {".wrz", "x-world/x-vrml"},
                {".wsc", "text/scriptlet"},
                {".wsdl", "text/xml"},
                {".wvx", "video/x-ms-wvx"},
                {".x", "application/directx"},
                {".xaf", "x-world/x-vrml"},
                {".xaml", "application/xaml+xml"},
                {".xap", "application/x-silverlight-app"},
                {".xbap", "application/x-ms-xbap"},
                {".xbm", "image/x-xbitmap"},
                {".xdr", "text/plain"},
                {".xht", "application/xhtml+xml"},
                {".xhtml", "application/xhtml+xml"},
                {".xla", "application/vnd.ms-excel"},
                {".xlam", "application/vnd.ms-excel.addin.macroEnabled.12"},
                {".xlc", "application/vnd.ms-excel"},
                {".xld", "application/vnd.ms-excel"},
                {".xlk", "application/vnd.ms-excel"},
                {".xll", "application/vnd.ms-excel"},
                {".xlm", "application/vnd.ms-excel"},
                {".xls", "application/vnd.ms-excel"},
                {".xlsb", "application/vnd.ms-excel.sheet.binary.macroEnabled.12"},
                {".xlsm", "application/vnd.ms-excel.sheet.macroEnabled.12"},
                {".xlsx", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"},
                {".xlt", "application/vnd.ms-excel"},
                {".xltm", "application/vnd.ms-excel.template.macroEnabled.12"},
                {".xltx", "application/vnd.openxmlformats-officedocument.spreadsheetml.template"},
                {".xlw", "application/vnd.ms-excel"},
                {".xml", "text/xml"},
                {".xmp", "application/octet-stream"},
                {".xmta", "application/xml"},
                {".xof", "x-world/x-vrml"},
                {".XOML", "text/plain"},
                {".xpm", "image/x-xpixmap"},
                {".xps", "application/vnd.ms-xpsdocument"},
                {".xrm-ms", "text/xml"},
                {".xsc", "application/xml"},
                {".xsd", "text/xml"},
                {".xsf", "text/xml"},
                {".xsl", "text/xml"},
                {".xslt", "text/xml"},
                {".xsn", "application/octet-stream"},
                {".xspf", "application/xspf+xml"},
                {".xss", "application/xml"},
                {".xtp", "application/octet-stream"},
                {".xwd", "image/x-xwindowdump"},
                {".z", "application/x-compress"},
                {".zip", "application/zip"},
                {"application/fsharp-script", ".fsx"},
                {"application/msaccess", ".adp"},
                {"application/msword", ".doc"},
                {"application/octet-stream", ".bin"},
                {"application/onenote", ".one"},
                {"application/postscript", ".eps"},
                {"application/step", ".step"},
                {"application/vnd.ms-excel", ".xls"},
                {"application/vnd.ms-powerpoint", ".ppt"},
                {"application/vnd.ms-works", ".wks"},
                {"application/vnd.visio", ".vsd"},
                {"application/x-director", ".dir"},
                {"application/xhtml+xml", ".xhtml"},
                {"application/xml", ".xml"}, // anomaly, .xml -> text/xml, but application/xml -> many things, but all are xml, so safest is .xml
                {"application/x-shockwave-flash", ".swf"},
                {"application/x-x509-ca-cert", ".cer"},
                {"application/x-zip-compressed", ".zip"},
                {"audio/aac", ".AAC"},
                {"audio/aiff", ".aiff"},
                {"audio/basic", ".snd"},
                {"audio/mid", ".midi"},
                {"audio/wav", ".wav"},
                {"audio/x-m4a", ".m4a"},
                {"audio/x-mpegurl", ".m3u"},
                {"audio/x-pn-realaudio", ".ra"},
                {"audio/x-smd", ".smd"},
                {"image/bmp", ".bmp"},
                {"image/jpeg", ".jpg"},
                {"image/pict", ".pic"},
                {"image/png", ".png"}, // Defined in [RFC-2045], [RFC-2048]
                {"image/tiff", ".tiff"},
                {"image/x-macpaint", ".mac"},
                {"image/x-png", ".png"}, // See https://www.w3.org/TR/PNG/#A-Media-type :"It is recommended that implementations also recognize the media type "image/x-png"."
                {"image/x-quicktime", ".qti"},
                {"message/rfc822", ".eml"},
                {"text/calendar", ".ics"},
                {"text/html", ".html"},
                {"text/plain", ".txt"},
                {"text/scriptlet", ".wsc"},
                {"text/xml", ".xml"},
                {"video/3gpp", ".3gp"},
                {"video/3gpp2", ".3gp2"},
                {"video/mp4", ".mp4"},
                {"video/mpeg", ".mpg"},
                {"video/quicktime", ".mov"},
                {"video/vnd.dlna.mpeg-tts", ".m2t"},
                {"video/x-dv", ".dv"},
                {"video/x-la-asf", ".lsf"},
                {"video/x-ms-asf", ".asf"},
                {"x-world/x-vrml", ".xof"},

                #endregion Big freaking list of mime types
            };

            var cache = mappings.ToList(); // need ToList() to avoid modifying while still enumerating

            foreach (var mapping in cache)
            {
                if (!mappings.ContainsKey(mapping.Value))
                {
                    mappings.Add(mapping.Value, mapping.Key);
                }
            }

            return mappings;
        }
    }
}
﻿using System;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Text.Json.Serialization;
using System.Threading.Tasks;
using elFinder.AspNet.Drivers;
using elFinder.AspNet.Helpers;

namespace elFinder.AspNet.Models
{
    public abstract class BaseModel
    {
        protected static readonly DateTime unixOrigin = new DateTime(1970, 1, 1, 0, 0, 0);

        /// <summary>
        ///  Name of file/dir. Required
        /// </summary>
        [JsonPropertyName("name")]
        public string Name { get; protected set; }

        /// <summary>
        ///  Hash of current file/dir path, first symbol must be letter, symbols before _underline_ - volume id, Required.
        /// </summary>
        [JsonPropertyName("hash")]
        public string Hash { get; protected set; }

        /// <summary>
        ///  mime type. Required.
        /// </summary>
        [JsonPropertyName("mime")]
        public string Mime { get; protected set; }

        /// <summary>
        /// file modification time in unix timestamp. Required.
        /// </summary>
        [JsonPropertyName("ts")]
        public long UnixTimeStamp { get; protected set; }

        /// <summary>
        ///  file size in bytes
        /// </summary>
        [JsonPropertyName("size")]
        public long Size { get; protected set; }

        /// <summary>
        ///  is readable
        /// </summary>
        [JsonPropertyName("read")]
        public byte Read { get; protected set; }

        /// <summary>
        /// is writable
        /// </summary>
        [JsonPropertyName("write")]
        public byte Write { get; protected set; }

        /// <summary>
        ///  is file locked. If locked that object cannot be deleted and renamed
        /// </summary>
        [JsonPropertyName("locked")]
        public byte Locked { get; protected set; }

        public static async Task<FileModel> CreateAsync(IFile file, RootVolume volume)
        {
            if (file == null) throw new ArgumentNullException("file");
            if (volume == null) throw new ArgumentNullException("volume");

            string parentPath = file.DirectoryName.Substring(volume.RootDirectory.Length);
            string relativePath = file.FullName.Substring(volume.RootDirectory.Length);

            var fileLength = await file.LengthAsync;

            FileModel response;
            if (volume.CanCreateThumbnail(file) && fileLength > 0)
            {
                using (var stream = await file.OpenReadAsync())
                {
                    try
                    {
                        var dim = volume.PictureEditor.ImageSize(stream);
                        response = new ImageModel
                        {
                            Thumbnail = await volume.GenerateThumbHashAsync(file),
                            Dimension = $"{dim.Width}x{dim.Height}"
                        };
                    }
                    catch (Exception ex)
                    {
                        Trace.TraceError(ex.Message);
                        // Fix for non-standard formats
                        // https://github.com/gordon-matt/elFinder.AspNet/issues/36
                        response = new FileModel();
                    }
                }
            }
            else
            {
                response = new FileModel();
            }

            response.Read = 1;
            response.Write = volume.IsReadOnly ? (byte)0 : (byte)1;
            response.Locked = ((volume.LockedFoldersIncludeFiles && volume.LockedFolders != null && volume.LockedFolders.Any(f => f == file.Directory.Name)) || volume.IsLocked) ? (byte)1 : (byte)0;
            response.Name = file.Name;
            response.Size = fileLength;
            response.UnixTimeStamp = (long)(await file.LastWriteTimeUtcAsync - unixOrigin).TotalSeconds;
            response.Mime = MimeHelper.GetMimeType(file.Extension);
            response.Hash = volume.VolumeId + HttpEncoder.EncodePath(relativePath);
            response.ParentHash = volume.VolumeId + HttpEncoder.EncodePath(parentPath.Length > 0 ? parentPath : file.Directory.Name);
            return response;
        }

        public static async Task<DirectoryModel> CreateAsync(IDirectory directory, RootVolume volume)
        {
            if (directory == null)
            {
                throw new ArgumentNullException("directory");
            }

            if (volume == null)
            {
                throw new ArgumentNullException("volume");
            }

            if (volume.RootDirectory == directory.FullName)
            {
                bool hasSubdirs = false;
                var subdirs = await directory.GetDirectoriesAsync();
                foreach (var item in subdirs)
                {
                    if (!item.Attributes.HasFlag(FileAttributes.Hidden))
                    {
                        hasSubdirs = true;
                        break;
                    }
                }

                var response = new RootModel
                {
                    Mime = "directory",
                    Dirs = hasSubdirs ? (byte)1 : (byte)0,
                    Hash = volume.VolumeId + HttpEncoder.EncodePath(directory.Name),
                    Read = 1,
                    Write = volume.IsReadOnly ? (byte)0 : (byte)1,
                    Locked = volume.IsLocked ? (byte)1 : (byte)0,
                    Name = volume.Alias,
                    Size = 0,
                    UnixTimeStamp = (long)(DateTime.UtcNow - unixOrigin).TotalSeconds,
                    VolumeId = volume.VolumeId
                };
                return response;
            }
            else
            {
                string parentPath = directory.Parent.FullName.Substring(volume.RootDirectory.Length);
                string relativePath = directory.FullName.Substring(volume.RootDirectory.Length).TrimEnd(Path.DirectorySeparatorChar);
                var response = new DirectoryModel
                {
                    Mime = "directory",
                    Dirs = (await directory.GetDirectoriesAsync()).Count() > 0 ? (byte)1 : (byte)0,
                    Hash = volume.VolumeId + HttpEncoder.EncodePath(relativePath),
                    Read = 1,
                    Write = volume.IsReadOnly ? (byte)0 : (byte)1,
                    Locked = ((volume.LockedFolders != null && volume.LockedFolders.Any(f => f == directory.Name)) || volume.IsLocked) ? (byte)1 : (byte)0,
                    Size = 0,
                    Name = directory.Name,
                    UnixTimeStamp = (long)(await directory.LastWriteTimeUtcAsync - unixOrigin).TotalSeconds,
                    ParentHash = volume.VolumeId + HttpEncoder.EncodePath(parentPath.Length > 0 ? parentPath : directory.Parent.Name),
                    VolumeId = volume.VolumeId
                };
                return response;
            }
        }
    }
}
﻿using System.Collections.Generic;
using System.Text.Json.Serialization;

namespace elFinder.AspNet.Models.Commands
{
    public class AddResponseModel
    {
        [JsonPropertyName("added")]
        public List<object> Added { get; protected set; }

        [JsonPropertyName("hashes")]
        public Dictionary<string, string> Hashes { get; protected set; }

        public AddResponseModel()
        {
            Added = new List<object>();
            Hashes = new Dictionary<string, string>();
        }
    }
}
﻿using System.Collections.Generic;
using System.Text.Json.Serialization;

namespace elFinder.AspNet.Models.Commands
{
    public class ChangedResponseModel
    {
        public ChangedResponseModel()
        {
            Changed = new List<FileModel>();
        }

        [JsonPropertyName("changed")]
        public List<FileModel> Changed { get; private set; }
    }
}
﻿using System.Drawing;
using System.Text.Json.Serialization;

namespace elFinder.AspNet.Models.Commands
{
    public class DimResponseModel
    {
        public DimResponseModel(string dimension)
        {
            Dimension = dimension;
        }

        public DimResponseModel(Size size)
        {
            Dimension = string.Format("{0}x{1}", size.Width, size.Height);
        }

        [JsonPropertyName("dim")]
        public string Dimension { get; set; }
    }
}
﻿using System.Text.Json.Serialization;

namespace elFinder.AspNet.Models.Commands
{
    public class GetResponseModel
    {
        [JsonPropertyName("content")]
        public string Content { get; set; }
    }
}
﻿using System.Collections.Generic;
using System.Text.Json.Serialization;

namespace elFinder.AspNet.Models.Commands
{
    public class ListResponseModel
    {
        public ListResponseModel()
        {
            List = new List<string>();
        }

        [JsonPropertyName("list")]
        public List<string> List { get; private set; }
    }
}
﻿using System.Collections.Generic;
using System.Text.Json.Serialization;

namespace elFinder.AspNet.Models.Commands
{
    public class BaseOpenResponseModel
    {
        private static DebugResponseModel debug = new DebugResponseModel();

        public BaseOpenResponseModel(DirectoryModel currentWorkingDirectory)
        {
            Files = new List<object>();
            CurrentWorkingDirectory = currentWorkingDirectory;
        }

        [JsonPropertyName("cwd")]
        public DirectoryModel CurrentWorkingDirectory { get; protected set; }

        [JsonPropertyName("debug")]
        public DebugResponseModel Debug => debug;

        [JsonPropertyName("files")]
        public List<object> Files { get; protected set; }

        [JsonPropertyName("options")]
        public Options Options { get; protected set; }
    }
}
﻿using System.Text.Json.Serialization;

namespace elFinder.AspNet.Models.Commands
{
    public class DebugResponseModel
    {
        [JsonPropertyName("connector")]
        public string Connector => ".net";
    }
}
﻿using System.Collections.Generic;
using System.Text.Json.Serialization;

namespace elFinder.AspNet.Models.Commands
{
    public class InitResponseModel : BaseOpenResponseModel
    {
        private static string[] empty = new string[0];

        public InitResponseModel(DirectoryModel currentWorkingDirectory, Options options) : base(currentWorkingDirectory)
        {
            Options = options;
        }

        [JsonPropertyName("api")]
        public string Api => "2.1";

        [JsonPropertyName("netDrivers")]
        public IEnumerable<string> NetDrivers => empty;
    }
}
﻿using System.Runtime.Serialization;

namespace elFinder.AspNet.Models.Commands
{
    [DataContract]
    public class OpenResponse : BaseOpenResponseModel
    {
        public OpenResponse(DirectoryModel currentWorkingDirectory, FullPath fullPath) : base(currentWorkingDirectory)
        {
            Options = new Options(fullPath);
            Files.Add(currentWorkingDirectory);
        }
    }
}
﻿using System.Collections.Generic;
using System.Text.Json.Serialization;

namespace elFinder.AspNet.Models.Commands
{
    public class Archive
    {
        [JsonPropertyName("create")]
        public IEnumerable<string> Create { get; set; }

        [JsonPropertyName("extract")]
        public IEnumerable<string> Extract { get; set; }

        [JsonPropertyName("createext")]
        public IDictionary<string, string> CreateExt { get; set; }
    }

    public class Options
    {
        private static string[] disabled = new string[] { "callback", "chmod", "editor", "netmount", "ping", "zipdl" };
        //private static string[] empty = new string[0];
        //private static Archive emptyArchives = new Archive();

        public Options(FullPath fullPath)
        {
            Path = fullPath.RootVolume.Alias;
            if (fullPath.RelativePath != string.Empty)
            {
                Path += Separator + fullPath.RelativePath.Replace('\\', Separator);
            }
            Url = fullPath.RootVolume.Url ?? string.Empty;
            ThumbnailsUrl = fullPath.RootVolume.ThumbnailUrl ?? string.Empty;
            //ThumbnailsUrl = fullPath.Root.ThumbnailUrl ?? fullPath.Root.Url + "/.tmb/";
            Archivers = new Archive
            {
                Create = new[] { "application/zip" },
                Extract = new[] { "application/zip" },
                CreateExt = new Dictionary<string, string>
                {
                    {"application/zip" ,"zip"}
                }
            };
        }

        [JsonPropertyName("archivers")]
        public Archive Archivers { get; set; }

        [JsonPropertyName("disabled")]
        public IEnumerable<string> Disabled => disabled;

        [JsonPropertyName("copyOverwrite")]
        public byte IsCopyOverwrite => 1;

        [JsonPropertyName("path")]
        public string Path { get; set; }

        [JsonPropertyName("separator")]
        public char Separator => '/';

        [JsonPropertyName("tmbUrl")]
        public string ThumbnailsUrl { get; set; }

        [JsonPropertyName("trashHash")]
        public string TrashHash => string.Empty;

        [JsonPropertyName("uploadMaxConn")]
        public int UploadMaxConnections => -1;

        [JsonPropertyName("uploadMaxSize")]
        public string UploadMaxSize { get; set; }

        [JsonPropertyName("uploadMime")]
        public UploadMimeModel UploadMime { get; set; }

        [JsonPropertyName("url")]
        public string Url { get; set; }
    }
}
﻿using System.Collections.Generic;
using System.Text.Json.Serialization;

namespace elFinder.AspNet.Models.Commands
{
    public class UploadMimeModel
    {
        [JsonPropertyName("allow")]
        public List<string> Allow { get; protected set; }

        [JsonPropertyName("deny")]
        public List<string> Deny { get; protected set; }

        [JsonPropertyName("firstOrder"), JsonConverter(typeof(JsonStringEnumConverter))]
        public OrderType FirstOrder { get; protected set; }

        public UploadMimeModel(IEnumerable<string> allow, IEnumerable<string> deny, OrderType first = OrderType.Deny)
        {
            Allow = new List<string>(allow);
            Deny = new List<string>(deny);
            FirstOrder = first;
        }

        public enum OrderType
        {
            Allow,
            Deny
        }
    }
}
﻿using System.Collections.Generic;
using System.Text.Json.Serialization;

namespace elFinder.AspNet.Models.Commands
{
    public class PutResponseModel
    {
        public PutResponseModel()
        {
            Changed = new List<FileModel>();
        }

        [JsonPropertyName("changed")]
        public List<FileModel> Changed { get; private set; }
    }
}
﻿using System.Collections.Generic;
using System.Text.Json.Serialization;

namespace elFinder.AspNet.Models.Commands
{
    public class RemoveResponseModel
    {
        public RemoveResponseModel()
        {
            Removed = new List<string>();
        }

        [JsonPropertyName("removed")]
        public List<string> Removed { get; }
    }
}
﻿using System.Collections.Generic;
using System.Text.Json.Serialization;

namespace elFinder.AspNet.Models.Commands
{
    public class ReplaceResponseModel
    {
        public ReplaceResponseModel()
        {
            Added = new List<object>();
            Removed = new List<string>();
        }

        [JsonPropertyName("added")]
        public List<object> Added { get; private set; }

        [JsonPropertyName("removed")]
        public List<string> Removed { get; private set; }
    }
}
﻿using System.Collections.Generic;
using System.Text.Json.Serialization;

namespace elFinder.AspNet.Models.Commands
{
    public class SearchResponseModel
    {
        public SearchResponseModel()
        {
            Files = new List<object>();
        }

        [JsonPropertyName("files")]
        public List<object> Files { get; private set; }
    }
}
﻿using System.Text.Json.Serialization;

namespace elFinder.AspNet.Models.Commands
{
    public class SizeResponseModel
    {
        [JsonPropertyName("size")]
        public long Size { get; set; }

        [JsonPropertyName("fileCnt")]
        public int FileCount { get; set; }

        [JsonPropertyName("dirCnt")]
        public int DirectoryCount { get; set; }
    }
}
﻿using System.Collections.Generic;
using System.Text.Json.Serialization;

namespace elFinder.AspNet.Models.Commands
{
    public class ThumbsResponseModel
    {
        public ThumbsResponseModel()
        {
            Images = new Dictionary<string, string>();
        }

        [JsonPropertyName("images")]
        public Dictionary<string, string> Images { get; }
    }
}
﻿using System.Collections.Generic;
using System.Text.Json.Serialization;

namespace elFinder.AspNet.Models.Commands
{
    public class TreeResponseModel
    {
        public TreeResponseModel()
        {
            Tree = new List<object>();
        }

        [JsonPropertyName("tree")]
        public List<object> Tree { get; private set; }
    }
}
﻿using System.Text.Json.Serialization;

namespace elFinder.AspNet.Models
{
    public class DirectoryModel : BaseModel
    {
        /// <summary>
        ///  Indicates the volume Id.
        /// </summary>
        //[JsonPropertyName("volumeId")]
        [JsonPropertyName("volumeid")] // https://github.com/Studio-42/elFinder/issues/2403
        public string VolumeId { get; set; }

        /// <summary>
        ///  Hash of parent directory. Required except roots dirs.
        /// </summary>
        [JsonPropertyName("phash")]
        public string ParentHash { get; set; }

        /// <summary>
        /// Is directory contains subfolders
        /// </summary>
        [JsonPropertyName("dirs")]
        public byte Dirs { get; set; }
    }
}
﻿using System;
using System.IO;

namespace elFinder.AspNet.Models
{
    public class FileContent : IDisposable
    {
        public string FileName { get; set; }
        public long Length { get; set; }
        public Stream ContentStream { get; set; }
        public string ContentType { get; set; }

        #region IDisposable Support

        public void Dispose()
        {
            ContentStream.Dispose();
        }

        #endregion IDisposable Support
    }
}
﻿using System.Text.Json.Serialization;

namespace elFinder.AspNet.Models
{
    public class FileModel : BaseModel
    {
        /// <summary>
        ///  Hash of parent directory. Required except roots dirs.
        /// </summary>
        [JsonPropertyName("phash")]
        public string ParentHash { get; set; }
    }
}
﻿using System.Text.Json.Serialization;

namespace elFinder.AspNet.Models
{
    internal class ImageModel : FileModel
    {
        [JsonPropertyName("tmb")]
        public object Thumbnail { get; set; }

        [JsonPropertyName("dim")]
        public string Dimension { get; set; }
    }
}
﻿namespace elFinder.AspNet.Models
{
    // https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types
    public struct MimeType
    {
        public string Type { get; set; }

        public string Subtype { get; set; }

        public string Full => $"{Type}/{Subtype}";

        public static implicit operator string(MimeType m) => m.Full;

        public override string ToString() => Full;
    }
}
﻿using System.Text.Json.Serialization;

namespace elFinder.AspNet.Models
{
    public class RootModel : DirectoryModel
    {
        [JsonPropertyName("isroot")]
        public byte IsRoot => 1;
    }
}
{
  "iisSettings": {
    "windowsAuthentication": false,
    "anonymousAuthentication": true,
    "iisExpress": {
      "applicationUrl": "http://localhost:65489/",
      "sslPort": 44333
    }
  },
  "profiles": {
    "IIS Express": {
      "commandName": "IISExpress",
      "launchBrowser": true,
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    },
    "elFinder.AspNet": {
      "commandName": "Project",
      "launchBrowser": true,
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      },
      "applicationUrl": "https://localhost:5001;http://localhost:5000"
    }
  }
}
﻿using System;
using System.Collections.Generic;
using System.IO;
using System.Threading.Tasks;
using elFinder.AspNet.Drawing;
using elFinder.AspNet.Drivers;
using elFinder.AspNet.Helpers;

namespace elFinder.AspNet
{
    /// <summary>
    /// Represents a root of file system
    /// </summary>
    public class RootVolume
    {
        /// <summary>
        ///
        /// </summary>
        /// <param name="rootDirectory">The root directory (physical location)</param>
        /// <param name="url">URL of root directory</param>
        /// <param name="thumbnailsUrl">URL of where to find thumbnails</param>
        /// <param name="directorySeparatorChar">Character used to separate directory levels in a path string. Default is System.IO.Path.DirectorySeparatorChar</param>
        public RootVolume(
            string rootDirectory,
            string url,
            string thumbnailsUrl = null,
            char directorySeparatorChar = default(char))
        {
            if (rootDirectory == null)
            {
                throw new ArgumentNullException("rootDirectory", "Root directory cannot be null");
            }

            Alias = Path.GetFileNameWithoutExtension(rootDirectory);
            RootDirectory = rootDirectory;
            Url = url;
            UploadOverwrite = true;
            PictureEditor = new DefaultPictureEditor();

            // https://github.com/EvgenNoskov/Elfinder.NET/blob/fb19f17a3682ed81cadcfea978dcce575806eebd/docs/Documentation.md
            if (!string.IsNullOrEmpty(thumbnailsUrl))
            {
                ThumbnailUrl = thumbnailsUrl;
            }

            DirectorySeparatorChar = directorySeparatorChar == default(char) ? Path.DirectorySeparatorChar : directorySeparatorChar; // Can be changed for other providers
            ThumbnailDirectory = $"{rootDirectory}{DirectorySeparatorChar}.tmb";
        }

        /// <summary>
        /// Gets or sets the path separator char to use. Default is System.IO.Path.DirectorySeparatorChar.
        /// </summary>
        public char DirectorySeparatorChar { get; }

        /// <summary>
        /// Get or sets alias for root. If not set will use directory name of path
        /// </summary>
        public string Alias { get; set; }

        /// <summary>
        /// Get or sets if root is locked (user can't remove, rename or delete files or subdirectories)
        /// </summary>
        public bool IsLocked { get; set; }

        /// <summary>
        /// Get or sets if root for read only (users can't change file)
        /// </summary>
        public bool IsReadOnly { get; set; }

        /// <summary>
        /// Get or sets if user can only show files (and cannot download).
        /// Note: if you set url property, than users can access to directory by the provided url
        /// </summary>
        public bool IsShowOnly { get; }

        /// <summary>
        /// Gets or sets a list of root subfolders that should be locked (user can't remove, rename)
        /// </summary>
        public List<string> LockedFolders { get; set; }

        /// <summary>
        /// Gets or sets if files in subfolders should be locked (user can't remove, rename)
        /// </summary>
        public bool LockedFoldersIncludeFiles { get; set; }

        /// <summary>
        /// Get or sets maximum upload file size. This size is per files in bytes.
        /// Note: you still to configure maxupload limits in web.config for whole application
        /// </summary>
        public int? MaxUploadSize { get; set; }

        /// <summary>
        /// Get or sets maximum upload file size. This size is per files in kb.
        /// Note: you still to configure maxupload limits in web.config for whole application
        /// </summary>
        public double? MaxUploadSizeInKb
        {
            get { return MaxUploadSize.HasValue ? (double?)(MaxUploadSize.Value / 1024.0) : null; }
            set { MaxUploadSize = value.HasValue ? (int?)(value * 1024) : null; }
        }

        /// <summary>
        /// Get or sets maximum upload file size. This size is per files in Mb.
        /// Note: you still to configure maxupload limits in web.config for whole application
        /// </summary>
        public double? MaxUploadSizeInMb
        {
            get { return MaxUploadSizeInKb.HasValue ? (double?)(MaxUploadSizeInKb.Value / 1024.0) : null; }
            set { MaxUploadSizeInKb = value.HasValue ? (int?)(value * 1024) : null; }
        }

        /// <summary>
        /// Gets the picture editor for this volume
        /// </summary>
        public IPictureEditor PictureEditor { get; }

        /// <summary>
        /// Get or sets a directory which is root
        /// </summary>
        public string RootDirectory { get; }

        /// <summary>
        /// Get or sets a subfolder of root diretory, which will be start
        /// </summary>
        public string StartDirectory { get; }

        /// <summary>
        /// Get ot sets thumbnals directory
        /// </summary>
        public string ThumbnailDirectory { get; private set; }

        /// <summary>
        /// Get or sets thumbnails size
        /// </summary>
        public int ThumbnailSize { get; set; } = 48;

        /// <summary>
        /// Get ot sets thumbnails url
        /// </summary>
        public string ThumbnailUrl { get; }

        /// <summary>
        /// Get or sets if files on upload will replace or give them new names. true - replace old files, false give new names like original_name-number.ext
        /// </summary>
        public bool UploadOverwrite { get; }

        /// <summary>
        /// Get or sets url that points to path directory (also called 'root URL').
        /// </summary>
        public string Url { get; }

        /// <summary>
        /// Gets a autogenerated prefix of root
        /// </summary>
        public string VolumeId { get; set; }

        public bool CanCreateThumbnail(IFile input)
        {
            return ThumbnailUrl != null && PictureEditor.CanProcessFile(input.Extension);
        }

        public async Task<string> GenerateThumbHashAsync(IFile originalImage)
        {
            if (ThumbnailDirectory == null)
            {
                string md5 = await originalImage.GetFileMd5Async();
                string thumbName = $"{Path.GetFileNameWithoutExtension(originalImage.Name)}_{md5}{originalImage.Extension}";
                string relativePath = originalImage.DirectoryName.Substring(RootDirectory.Length);
                return VolumeId + HttpEncoder.EncodePath($"{relativePath}{DirectorySeparatorChar}{thumbName}");
            }
            else
            {
                string thumbPath = await GenerateThumbPathAsync(originalImage);
                string relativePath = thumbPath.Substring(ThumbnailDirectory.Length);
                return VolumeId + HttpEncoder.EncodePath(relativePath);
            }
        }

        public async Task<string> GenerateThumbPathAsync(IFile originalImage)
        {
            if (ThumbnailDirectory == null || !CanCreateThumbnail(originalImage))
            {
                return null;
            }
            string relativePath = originalImage.FullName.Substring(RootDirectory.Length);
            string thumbDir = GetDirectoryName($"{ThumbnailDirectory}{relativePath}");
            string md5 = await originalImage.GetFileMd5Async();
            string thumbName = $"{Path.GetFileNameWithoutExtension(originalImage.Name)}_{md5}{originalImage.Extension}";
            return $"{thumbDir}{DirectorySeparatorChar}{thumbName}";
        }

        public string GenerateThumbPath(IDirectory originalDirectory)
        {
            if (ThumbnailDirectory == null)
            {
                return null;
            }
            string relativePath = originalDirectory.FullName.Substring(RootDirectory.Length);
            return ThumbnailDirectory + relativePath;
        }

        private string GetDirectoryName(string file)
        {
            int length = file.Length;
            int startIndex = length;
            while (--startIndex >= 0)
            {
                char ch = file[startIndex];
                if (ch == DirectorySeparatorChar)
                {
                    return file.Substring(0, startIndex);
                }
            }
            return string.Empty;
        }

        internal async Task<string> GetExistingThumbHashAsync(IFile originalImage)
        {
            string thumbPath = await GetExistingThumbPathAsync(originalImage);
            if (thumbPath == null)
            {
                return null;
            }
            string relativePath = thumbPath.Substring(ThumbnailDirectory.Length);
            return VolumeId + HttpEncoder.EncodePath(relativePath);
        }

        internal async Task<string> GetExistingThumbPathAsync(IFile originalImage)
        {
            string thumbPath = await GenerateThumbPathAsync(originalImage);
            return thumbPath;
        }

        internal string GetExistingThumbPath(IDirectory originalDirectory)
        {
            if (ThumbnailDirectory == null)
            {
                return null;
            }

            string relativePath = originalDirectory.FullName.Substring(RootDirectory.Length);
            string thumbDir = ThumbnailDirectory + relativePath;
            return thumbDir;
        }
    }
}
﻿<Project Sdk="Microsoft.NET.Sdk.Web">
  <PropertyGroup>
    <TargetFrameworks>netstandard2.0</TargetFrameworks>
    <Authors>EvgenNoskov, gordon-matt, mguinness</Authors>
    <Company>N/A</Company>
    <NeutralLanguage>en-US</NeutralLanguage>
    <Description>elFinder ASP.NET backend</Description>
    <PackageProjectUrl>https://github.com/mguinness/elFinder.AspNet</PackageProjectUrl>
    <Version>1.1.0</Version>
    <PackageLicenseUrl>https://github.com/mguinness/elFinder.AspNet/raw/main/LICENSE</PackageLicenseUrl>
    <OutputType>Library</OutputType>
    <IsPackable>true</IsPackable>
  </PropertyGroup>

  <ItemGroup>
    <None Remove="MimeTypes.txt" />
  </ItemGroup>

  <ItemGroup>
    <EmbeddedResource Include="MimeTypes.txt" />
  </ItemGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.Extensions.Primitives" Version="2.1.6" />
    <PackageReference Include="System.Drawing.Common" Version="4.7.0" />
    <PackageReference Include="System.Text.Json" Version="4.7.0" />
  </ItemGroup>
</Project>
# This file controls what Internet media types are sent to the client for
# given file extension(s).  Sending the correct media type to the client
# is important so they know how to handle the content of the file.
# For more information about Internet media types, please read 
# RFC 2045, 2046, 2047, 2048, and 2077.  The Internet media type
# registry is at <ftp://ftp.iana.org/assignments/media-types/>.

# MIME type			Extension
application/andrew-inset ez
application/chemtool cht
application/dicom dcm
application/docbook+xml docbook
application/ecmascript ecma
application/flash-video flv
application/illustrator ai
application/javascript js
application/json json
application/mac-binhex40
application/mathematica nb
application/msword doc
application/octet-stream bin
application/oda oda
application/ogg ogg
application/pdf pdf
application/pgp pgp
application/pgp-encrypted
application/pgp-encrypted pgp gpg
application/pgp-keys
application/pgp-keys skr pkr
application/pgp-signature
application/pgp-signature sig
application/pkcs7-mime
application/pkcs7-signature p7s
application/postscript ps
application/rtf rtf
application/sdp sdp
application/smil smil smi sml
application/stuffit sit
application/vnd.corel-draw cdr
application/vnd.hp-hpgl hpgl
application/vnd.hp-pcl pcl
application/vnd.lotus-1-2-3 123 wk1 wk3 wk4 wks
application/vnd.mozilla.xul+xml xul
application/vnd.ms-excel xls xlc xll xlm xlw xla xlt xld
application/vnd.ms-powerpoint ppz ppt pps pot
application/vnd.oasis.opendocument.chart odc
application/vnd.oasis.opendocument.database odb
application/vnd.oasis.opendocument.formula odf
application/vnd.oasis.opendocument.graphics odg
application/vnd.oasis.opendocument.graphics-template otg
application/vnd.oasis.opendocument.image odi
application/vnd.oasis.opendocument.presentation odp
application/vnd.oasis.opendocument.presentation-template otp
application/vnd.oasis.opendocument.spreadsheet ods
application/vnd.oasis.opendocument.spreadsheet-template ots
application/vnd.oasis.opendocument.text odt
application/vnd.oasis.opendocument.text-master odm
application/vnd.oasis.opendocument.text-template ott
application/vnd.oasis.opendocument.text-web oth
application/vnd.palm pdb
application/vnd.rn-realmedia
application/vnd.rn-realmedia rm
application/vnd.rn-realmedia-secure rms
application/vnd.rn-realmedia-vbr rmvb
application/vnd.stardivision.calc sdc
application/vnd.stardivision.chart sds
application/vnd.stardivision.draw sda
application/vnd.stardivision.impress sdd sdp
application/vnd.stardivision.mail smd
application/vnd.stardivision.math smf
application/vnd.stardivision.writer sdw vor sgl
application/vnd.sun.xml.calc sxc
application/vnd.sun.xml.calc.template stc
application/vnd.sun.xml.draw sxd
application/vnd.sun.xml.draw.template std
application/vnd.sun.xml.impress sxi
application/vnd.sun.xml.impress.template sti
application/vnd.sun.xml.math sxm
application/vnd.sun.xml.writer sxw
application/vnd.sun.xml.writer.global sxg
application/vnd.sun.xml.writer.template stw
application/vnd.wordperfect wpd
application/x-abiword abw abw.CRASHED abw.gz zabw
application/x-amipro sam
application/x-anjuta-project prj
application/x-applix-spreadsheet as
application/x-applix-word aw
application/x-arc
application/x-archive a
application/x-arj arj
application/x-asax asax
application/x-ascx ascx
application/x-ashx ashx
application/x-asix asix
application/x-asmx asmx
application/x-asp asp
application/x-awk
application/x-axd axd
application/x-bcpio bcpio
application/x-bittorrent torrent
application/x-blender blender blend BLEND
application/x-bzip bz bz2
application/x-bzip bz2 bz
application/x-bzip-compressed-tar tar.bz tar.bz2
application/x-bzip-compressed-tar tar.bz tar.bz2 tbz tbz2
application/x-cd-image iso
application/x-cgi cgi
application/x-chess-pgn pgn
application/x-chm chm
application/x-class-file
application/x-cmbx cmbx
application/x-compress Z
application/x-compressed-tar tar.gz tar.Z tgz taz
application/x-compressed-tar tar.gz tgz
application/x-config config
application/x-core
application/x-cpio cpio
application/x-cpio-compressed cpio.gz
application/x-csh csh
application/x-cue cue
application/x-dbase dbf
application/x-dbm
application/x-dc-rom dc
application/x-deb deb
application/x-designer ui
application/x-desktop desktop kdelnk
application/x-devhelp devhelp
application/x-dia-diagram dia
application/x-disco disco
application/x-dvi dvi
application/x-e-theme etheme
application/x-egon egon
application/x-executable exe
application/x-font-afm afm
application/x-font-bdf bdf
application/x-font-dos
application/x-font-framemaker
application/x-font-libgrx
application/x-font-linux-psf psf
application/x-font-otf
application/x-font-pcf pcf
application/x-font-pcf pcf.gz
application/x-font-speedo spd
application/x-font-sunos-news
application/x-font-tex
application/x-font-tex-tfm
application/x-font-ttf ttc TTC
application/x-font-ttf ttf
application/x-font-type1 pfa pfb gsf pcf.Z
application/x-font-vfont
application/x-frame
application/x-frontline aop
application/x-gameboy-rom gb
application/x-gdbm
application/x-gdesklets-display display
application/x-genesis-rom gen md
application/x-gettext-translation gmo
application/x-glabels glabels
application/x-glade glade
application/x-gmc-link
application/x-gnome-db-connection connection
application/x-gnome-db-database database
application/x-gnome-stones caves
application/x-gnucash gnucash gnc xac
application/x-gnumeric gnumeric
application/x-graphite gra
application/x-gtar gtar
application/x-gtktalog
application/x-gzip gz
application/x-gzpostscript ps.gz
application/x-hdf hdf
application/x-ica ica
application/x-ipod-firmware
application/x-jamin jam
application/x-jar jar
application/x-java class
application/x-java-archive jar ear war

application/x-jbuilder-project jpr jpx
application/x-karbon karbon
application/x-kchart chrt
application/x-kformula kfo
application/x-killustrator kil
application/x-kivio flw
application/x-kontour kon
application/x-kpovmodeler kpm
application/x-kpresenter kpr kpt
application/x-krita kra
application/x-kspread ksp
application/x-kspread-crypt
application/x-ksysv-package
application/x-kugar kud
application/x-kword kwd kwt
application/x-kword-crypt
application/x-lha lha lzh
application/x-lha lzh
application/x-lhz lhz
application/x-linguist ts
application/x-lyx lyx
application/x-lzop lzo
application/x-lzop-compressed-tar tar.lzo tzo
application/x-macbinary
application/x-machine-config
application/x-magicpoint mgp
application/x-master-page master
application/x-matroska mkv
application/x-mdp mdp
application/x-mds mds
application/x-mdsx mdsx
application/x-mergeant mergeant
application/x-mif mif
application/x-mozilla-bookmarks
application/x-mps mps
application/x-ms-dos-executable exe
application/x-mswinurl
application/x-mswrite wri
application/x-msx-rom msx
application/x-n64-rom n64
application/x-nautilus-link
application/x-nes-rom nes
application/x-netcdf cdf nc
application/x-netscape-bookmarks
application/x-object o
application/x-ole-storage
application/x-oleo oleo
application/x-palm-database
application/x-palm-database pdb prc
application/x-par2 PAR2 par2
application/x-pef-executable
application/x-perl pl pm al perl
application/x-php php php3 php4
application/x-pkcs12 p12 pfx
application/x-planner planner mrproject
application/x-planperfect pln
application/x-prjx prjx
application/x-profile
application/x-ptoptimizer-script pto
application/x-pw pw
application/x-python-bytecode pyc pyo
application/x-quattro-pro wb1 wb2 wb3
application/x-quattropro wb1 wb2 wb3
application/x-qw qif
application/x-rar rar
application/x-rar-compressed rar
application/x-rdp rdp
application/x-reject rej
application/x-remoting rem
application/x-resources resources
application/x-resourcesx resx
application/x-rpm rpm
application/x-ruby
application/x-sc
application/x-sc sc
application/x-scribus sla sla.gz scd scd.gz
application/x-shar shar
application/x-shared-library-la la
application/x-sharedlib so
application/x-shellscript sh
application/x-shockwave-flash swf
application/x-siag siag
application/x-slp
application/x-smil kino
application/x-smil smi smil
application/x-sms-rom sms gg
application/x-soap-remoting soap
application/x-streamingmedia ssm
application/x-stuffit
application/x-stuffit bin sit
application/x-sv4cpio sv4cpio
application/x-sv4crc sv4crc
application/x-tar tar
application/x-tarz tar.Z
application/x-tex-gf gf
application/x-tex-pk k
application/x-tgif obj
application/x-theme theme
application/x-toc toc
application/x-toutdoux
application/x-trash   bak old sik
application/x-troff tr roff t
application/x-troff-man man
application/x-troff-man-compressed
application/x-tzo tar.lzo tzo
application/x-ustar ustar
application/x-wais-source src
application/x-web-config
application/x-wpg wpg
application/x-wsdl wsdl
application/x-x509-ca-cert der cer crt cert pem
application/x-xbel xbel
application/x-zerosize
application/x-zoo zoo
application/xhtml+xml xhtml
application/zip zip
audio/ac3 ac3
audio/basic au snd
audio/midi mid midi
audio/mpeg mp3
audio/prs.sid sid psid
audio/vnd.rn-realaudio ra
audio/x-aac aac
audio/x-adpcm
audio/x-aifc
audio/x-aiff aif aiff
audio/x-aiff aiff aif aifc
audio/x-aiffc
audio/x-flac flac
audio/x-m4a m4a
audio/x-mod mod ult uni XM m15 mtm 669
audio/x-mp3-playlist
audio/x-mpeg
audio/x-mpegurl m3u
audio/x-ms-asx
audio/x-pn-realaudio ra ram rm
audio/x-pn-realaudio ram rmm
audio/x-riff
audio/x-s3m s3m
audio/x-scpls pls
audio/x-scpls pls xpl
audio/x-stm stm
audio/x-voc voc
audio/x-wav wav
audio/x-xi xi
audio/x-xm xm
image/bmp bmp
image/cgm cgm
image/dpx
image/fax-g3 g3
image/g3fax
image/gif gif
image/ief ief
image/jpeg jpeg jpg jpe
image/jpeg2000 jp2
image/png png
image/rle rle
image/svg+xml svg
image/tiff tif tiff
image/vnd.djvu djvu djv
image/vnd.dwg dwg
image/vnd.dxf dxf
image/x-3ds 3ds
image/x-applix-graphics ag
image/x-cmu-raster ras
image/x-compressed-xcf xcf.gz xcf.bz2
image/x-dcraw bay BAY bmq BMQ cr2 CR2 crw CRW cs1 CS1 dc2 DC2 dcr DCR fff FFF k25 K25 kdc KDC mos MOS mrw MRW nef NEF orf ORF pef PEF raf RAF rdc RDC srf SRF x3f X3F
image/x-dib
image/x-eps eps epsi epsf
image/x-fits fits
image/x-fpx
image/x-icb icb
image/x-ico ico
image/x-iff iff
image/x-ilbm ilbm
image/x-jng jng
image/x-lwo lwo lwob
image/x-lws lws
image/x-msod msod
image/x-niff
image/x-pcx
image/x-photo-cd pcd
image/x-pict pict pict1 pict2
image/x-portable-anymap pnm
image/x-portable-bitmap pbm
image/x-portable-graymap pgm
image/x-portable-pixmap ppm
image/x-psd psd
image/x-rgb rgb
image/x-sgi sgi
image/x-sun-raster sun
image/x-tga tga
image/x-win-bitmap cur
image/x-wmf wmf
image/x-xbitmap xbm
image/x-xcf xcf
image/x-xfig fig
image/x-xpixmap xpm
image/x-xwindowdump xwd
inode/blockdevice
inode/chardevice
inode/directory
inode/fifo
inode/mount-point
inode/socket
inode/symlink
message/delivery-status
message/disposition-notification
message/external-body
message/news
message/partial
message/rfc822
message/x-gnu-rmail
model/vrml wrl
multipart/alternative
multipart/appledouble
multipart/digest
multipart/encrypted
multipart/mixed
multipart/related
multipart/report
multipart/signed
multipart/x-mixed-replace
text/calendar vcs ics
text/css css CSSL
text/directory vcf vct gcrd
text/enriched
text/html html htm
text/htmlh
text/mathml mml
text/plain txt asc
text/rdf rdf
text/rfc822-headers
text/richtext rtx
text/rss rss
text/sgml sgml sgm
text/spreadsheet sylk slk
text/tab-separated-values tsv
text/vnd.rn-realtext rt
text/vnd.wap.wml wml
text/x-adasrc adb ads
text/x-authors
text/x-bibtex bib
text/x-boo boo
text/x-c++hdr hh
text/x-c++src cpp cxx cc C c++
text/x-chdr h h++ hp
text/x-comma-separated-values csv
text/x-copying
text/x-credits
text/x-csrc c
text/x-dcl dcl
text/x-dsl dsl
text/x-dsrc d
text/x-dtd dtd
text/x-emacs-lisp el
text/x-fortran f
text/x-gettext-translation po
text/x-gettext-translation-template pot
text/x-gtkrc
text/x-haskell hs
text/x-idl idl
text/x-install
text/x-java java
text/x-js js
text/x-ksysv-log
text/x-literate-haskell lhs
text/x-log log
text/x-makefile
text/x-moc moc
text/x-msil il
text/x-nemerle n
text/x-objcsrc m
text/x-pascal p pas
text/x-patch diff patch
text/x-python py
text/x-readme
text/x-rng rng
text/x-scheme scm
text/x-setext etx
text/x-speech
text/x-sql sql
text/x-suse-ymp ymp
text/x-suse-ymu ymu
text/x-tcl tcl tk
text/x-tex tex ltx sty cls
text/x-texinfo texi texinfo
text/x-texmacs tm ts
text/x-troff-me me
text/x-troff-mm mm
text/x-troff-ms ms
text/x-uil uil
text/x-uri uri url
text/x-vb vb
text/x-xds xds
text/x-xmi xmi
text/x-xsl xsl
text/x-xslfo fo xslfo
text/x-xslt xslt xsl
text/xmcd
text/xml xml
video/3gpp 3gp
video/dv dv dif
video/isivideo
video/mpeg mpeg mpg mp2 mpe vob dat
video/mp4 mp4
video/quicktime qt mov moov qtvr
video/vivo
video/vnd.rn-realvideo rv
video/wavelet
video/x-3gpp2 3g2
video/x-anim anim[1-9j]
video/x-avi
video/x-flic fli flc
video/x-mng mng
video/x-ms-asf asf asx
video/x-ms-wmv wmv
video/x-msvideo avi
video/x-nsv nsv NSV
video/x-real-video
video/x-sgi-movie movie
application/x-java-jnlp-file      jnlp
application/vnd.openxmlformats-officedocument.wordprocessingml.document docx
application/vnd.openxmlformats-officedocument.wordprocessingml.template dotx
application/vnd.ms-word.document.macroEnabled.12 docm
application/vnd.ms-word.template.macroEnabled.12 dotm
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet xlsx
application/vnd.openxmlformats-officedocument.spreadsheetml.template xltx
application/vnd.ms-excel.sheet.macroEnabled.12 xlsm
application/vnd.ms-excel.template.macroEnabled.12 xltm
application/vnd.ms-excel.addin.macroEnabled.12 xlam
application/vnd.ms-excel.sheet.binary.macroEnabled.12 xlsb
application/vnd.openxmlformats-officedocument.presentationml.presentation pptx
application/vnd.openxmlformats-officedocument.presentationml.template potx
application/vnd.openxmlformats-officedocument.presentationml.slideshow ppsx
application/vnd.ms-powerpoint.addin.macroEnabled.12 ppam