Files
ps4-ezremote-client/data/assets/res/angular-filemanager.min.js
T

1 line
139 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
!function(e,n){"use strict";n.module("FileManagerApp",["pascalprecht.translate","ngFileUpload"]),n.element(e.document).on("shown.bs.modal",".modal",function(){e.setTimeout(function(){n.element("[autofocus]",this).focus()}.bind(this),100)}),n.element(e.document).on("click",function(){n.element("#context-menu").hide()}),n.element(e.document).on("contextmenu",'.main-navigation .table-files tr.item-list:has("td"), .item-list',function(a){var r=n.element("#context-menu");a.pageX>=e.innerWidth-r.width()&&(a.pageX-=r.width()),a.pageY>=e.innerHeight-r.height()&&(a.pageY-=r.height()),r.hide().css({left:a.pageX,top:a.pageY}).appendTo("body").show(),a.preventDefault()}),Array.prototype.find||(Array.prototype.find=function(e){if(null==this)throw new TypeError("Array.prototype.find called on null or undefined");if("function"!=typeof e)throw new TypeError("predicate must be a function");for(var n,a=Object(this),r=a.length>>>0,i=arguments[1],t=0;t<r;t++)if(n=a[t],e.call(i,n,t,a))return n})}(window,angular),function(e){"use strict";e.module("FileManagerApp").controller("FileManagerCtrl",["$scope","$rootScope","$window","$translate","fileManagerConfig","item","fileNavigator","apiMiddleware",function(n,a,r,i,t,l,o,s){var d=r.localStorage;n.config=t,n.reverse=!1,n.predicate=["model.type","model.name"],n.order=function(e){n.reverse=n.predicate[1]===e&&!n.reverse,n.predicate[1]=e},n.query="",n.fileNavigator=new o,n.apiMiddleware=new s,n.uploadFileList=[],n.viewTemplate=d.getItem("viewTemplate")||"main-icons.html",n.fileList=[],n.temps=[],n.$watch("temps",function(){n.singleSelection()?n.temp=n.singleSelection():(n.temp=new l({rights:644}),n.temp.multiple=!0),n.temp.revert()}),n.fileNavigator.onRefresh=function(){n.temps=[],n.query="",a.selectedModalPath=n.fileNavigator.currentPath},n.setTemplate=function(e){d.setItem("viewTemplate",e),n.viewTemplate=e},n.changeLanguage=function(e){if(e)return d.setItem("language",e),i.use(e);i.use(d.getItem("language")||t.defaultLang)},n.isSelected=function(e){return-1!==n.temps.indexOf(e)},n.selectOrUnselect=function(e,a){var r=n.temps.indexOf(e),i=a&&3==a.which;if(a&&a.target.hasAttribute("prevent"))n.temps=[];else if(!(!e||i&&n.isSelected(e))){if(a&&a.shiftKey&&!i){var t=n.fileList,l=t.indexOf(e),o=n.temps[0],s=t.indexOf(o),d=void 0;if(o&&t.indexOf(o)<l){for(n.temps=[];s<=l;)d=t[s],!n.isSelected(d)&&n.temps.push(d),s++;return}if(o&&t.indexOf(o)>l){for(n.temps=[];s>=l;)d=t[s],!n.isSelected(d)&&n.temps.push(d),s--;return}}!a||i||!a.ctrlKey&&!a.metaKey?n.temps=[e]:n.isSelected(e)?n.temps.splice(r,1):n.temps.push(e)}},n.singleSelection=function(){return 1===n.temps.length&&n.temps[0]},n.totalSelecteds=function(){return{total:n.temps.length}},n.selectionHas=function(e){return n.temps.find(function(n){return n&&n.model.type===e})},n.prepareNewFolder=function(){var e=new l(null,n.fileNavigator.currentPath);return n.temps=[e],e},n.prepareInstallUrl=function(){var e=new l(null,null);return n.temps=[e],e},n.prepareDownloadUrl=function(){var e=new l(null,null);return e.name="/data",n.temps=[e],e},n.smartClick=function(e){var a=n.config.allowedActions.pickFiles;if(e.isFolder())return n.fileNavigator.folderClick(e);if("function"==typeof n.config.pickCallback&&a){if(!0===n.config.pickCallback(e.model))return}return e.isImage()?n.config.previewImagesInModal?n.openImagePreview(e):n.apiMiddleware.download(e,!0):e.isEditable()?n.openEditItem(e):void 0},n.openImagePreview=function(){var e=n.singleSelection();n.apiMiddleware.apiHandler.inprocess=!0,n.modal("imagepreview",null,!0).find("#imagepreview-target").attr("src",n.getUrl(e)).unbind("load error").on("load error",function(){n.apiMiddleware.apiHandler.inprocess=!1,n.$apply()})},n.openEditItem=function(){var e=n.singleSelection();n.apiMiddleware.getContent(e).then(function(n){e.tempModel.content=e.model.content=n.result}),n.modal("edit")},n.modal=function(a,r,i){var t=e.element("#"+a);return t.modal(r?"hide":"show"),n.apiMiddleware.apiHandler.error="",n.apiMiddleware.apiHandler.asyncSuccess=!1,!i||t},n.modalWithPathSelector=function(e){return a.selectedModalPath=n.fileNavigator.currentPath,n.modal(e)},n.isInThisPath=function(e){return-1!==(n.fileNavigator.currentPath.join("/")+"/").indexOf(e+"/")},n.edit=function(){n.apiMiddleware.edit(n.singleSelection()).then(function(){n.modal("edit",!0)})},n.changePermissions=function(){n.apiMiddleware.changePermissions(n.temps,n.temp).then(function(){n.fileNavigator.refresh(),n.modal("changepermissions",!0)})},n.download=function(){var e=n.singleSelection();return e?n.apiMiddleware.download(e):n.apiMiddleware.downloadMultiple(n.temps)},n.copy=function(){var e=n.singleSelection();if(e){var r=e.tempModel.name.trim();if(n.fileNavigator.fileNameExists(r)&&c(e))return n.apiMiddleware.apiHandler.error=i.instant("error_invalid_filename"),!1;if(!r)return n.apiMiddleware.apiHandler.error=i.instant("error_invalid_filename"),!1}n.apiMiddleware.copy(n.temps,a.selectedModalPath).then(function(){n.fileNavigator.refresh(),n.modal("copy",!0)})},n.compress=function(){var e=n.temp.tempModel.name.trim();return n.fileNavigator.fileNameExists(e)&&c(n.temp)?(n.apiMiddleware.apiHandler.error=i.instant("error_invalid_filename"),!1):e?void n.apiMiddleware.compress(n.temps,e,a.selectedModalPath).then(function(){if(n.fileNavigator.refresh(),!n.config.compressAsync)return n.modal("compress",!0);n.apiMiddleware.apiHandler.asyncSuccess=!0},function(){n.apiMiddleware.apiHandler.asyncSuccess=!1}):(n.apiMiddleware.apiHandler.error=i.instant("error_invalid_filename"),!1)},n.extract=function(){var e=n.temp,r=n.temp.tempModel.name.trim();return n.fileNavigator.fileNameExists(r)&&c(n.temp)?(n.apiMiddleware.apiHandler.error=i.instant("error_invalid_filename"),!1):r?void n.apiMiddleware.extract(e,r,a.selectedModalPath).then(function(){if(n.fileNavigator.refresh(),!n.config.extractAsync)return n.modal("extract",!0);n.apiMiddleware.apiHandler.asyncSuccess=!0},function(){n.apiMiddleware.apiHandler.asyncSuccess=!1}):(n.apiMiddleware.apiHandler.error=i.instant("error_invalid_filename"),!1)},n.remove=function(){n.apiMiddleware.remove(n.temps).then(function(){n.fileNavigator.refresh(),n.modal("remove",!0)})},n.isInstallable=function(){for(var e=0;e<n.temps.length;e++)if(n.temps[e].isFolder()||!n.temps[e].isInstallable())return!1;return!0},n.install=function(){n.apiMiddleware.install(n.temps).then(function(){n.fileNavigator.refresh()})},n.move=function(){var e=n.singleSelection()||n.temps[0];if(e&&c(e))return n.apiMiddleware.apiHandler.error=i.instant("error_cannot_move_same_path"),!1;n.apiMiddleware.move(n.temps,a.selectedModalPath).then(function(){n.fileNavigator.refresh(),n.modal("move",!0)})},n.rename=function(){var e=n.singleSelection(),a=e.tempModel.name,r=e.tempModel.path.join("")===e.model.path.join("");if(!a||r&&n.fileNavigator.fileNameExists(a))return n.apiMiddleware.apiHandler.error=i.instant("error_invalid_filename"),!1;n.apiMiddleware.rename(e).then(function(){n.fileNavigator.refresh(),n.modal("rename",!0)})},n.createFolder=function(){var e=n.singleSelection(),a=e.tempModel.name;if(!a||n.fileNavigator.fileNameExists(a))return n.apiMiddleware.apiHandler.error=i.instant("error_invalid_filename");n.apiMiddleware.createFolder(e).then(function(){n.fileNavigator.refresh(),n.modal("newfolder",!0)})},n.installUrl=function(){var e=n.singleSelection();if(!e.tempModel.name)return n.apiMiddleware.apiHandler.error=i.instant("error_installing_url");n.apiMiddleware.installUrl(e).then(function(){n.modal("install_url",!0)})},n.downloadUrl=function(){var e=n.singleSelection();e.tempModel.path=a.getSelectedPath();if(!e.tempModel.path)return n.apiMiddleware.apiHandler.error=i.instant("error_download_url");n.apiMiddleware.downloadUrl(e).then(function(){n.modal("download_url",!0)})},n.addForUpload=function(e){n.uploadFileList=n.uploadFileList.concat(e),n.modal("uploadfile")},n.removeFromUpload=function(e){n.uploadFileList.splice(e,1)},n.uploadFiles=function(){n.apiMiddleware.upload(n.uploadFileList,n.fileNavigator.currentPath).then(function(){n.fileNavigator.refresh(),n.uploadFileList=[],n.modal("uploadfile",!0)},function(e){var a=e.result&&e.result.error||i.instant("error_uploading_files");n.apiMiddleware.apiHandler.error=a})},n.getUrl=function(e){return n.apiMiddleware.getUrl(e)};var c=function(e){var n=a.selectedModalPath.join("");return(e&&e.model.path.join(""))===n},p=function(e){var n=r.location.search.substr(1).split("&").filter(function(n){return e===n.split("=")[0]});return n[0]&&n[0].split("=")[1]||void 0};n.changeLanguage(p("lang")),n.isWindows="Windows"===p("server"),n.fileNavigator.refresh()}])}(angular),function(e){"use strict";angular.module("FileManagerApp").controller("ModalFileManagerCtrl",["$scope","$rootScope","fileNavigator",function(e,n,a){e.reverse=!1,e.predicate=["model.type","model.name"],e.fileNavigator=new a,n.selectedModalPath=[],e.order=function(n){e.reverse=e.predicate[1]===n&&!e.reverse,e.predicate[1]=n},e.select=function(a){n.selectedModalPath=a.model.fullPath().split("/").filter(Boolean),e.modal("selector",!0)},e.selectCurrent=function(){n.selectedModalPath=e.fileNavigator.currentPath,e.modal("selector",!0)},e.selectedFilesAreChildOfPath=function(n){var a=n.model.fullPath();return e.temps.find(function(e){var n=e.model.fullPath();if(a==n)return!0})},n.openNavigator=function(n){e.fileNavigator.currentPath=n,e.fileNavigator.refresh(),e.modal("selector")},n.getSelectedPath=function(){var a="/"+n.selectedModalPath.filter(Boolean).join("/");return e.singleSelection()&&!e.singleSelection().isFolder()&&(a+="/"+e.singleSelection().tempModel.name),a.replace(/\/\//,"/")}}])}(),function(e){"use strict";var n=angular.module("FileManagerApp");n.directive("angularFilemanager",["$parse","fileManagerConfig",function(e,n){return{restrict:"EA",templateUrl:n.tplPath+"/main.html"}}]),n.directive("ngFile",["$parse",function(e){return{restrict:"A",link:function(n,a,r){var i=e(r.ngFile).assign;a.bind("change",function(){n.$apply(function(){i(n,a[0].files)})})}}}]),n.directive("ngRightClick",["$parse",function(e){return function(n,a,r){var i=e(r.ngRightClick);a.bind("contextmenu",function(e){n.$apply(function(){e.preventDefault(),i(n,{$event:e})})})}}])}(),function(e){"use strict";var n=angular.module("FileManagerApp");n.filter("strLimit",["$filter",function(e){return function(n,a,r){return n.length<=a?n:e("limitTo")(n,a)+(r||"...")}}]),n.filter("fileExtension",["$filter",function(e){return function(n){return/\./.test(n)&&e("strLimit")(n.split(".").pop(),3,"..")||""}}]),n.filter("formatDate",["$filter",function(){return function(e){return e instanceof Date?e.toISOString().substring(0,19).replace("T"," "):(e.toLocaleString||e.toString).apply(e)}}]),n.filter("humanReadableFileSize",["$filter","fileManagerConfig",function(e,n){var a=[" kB"," MB"," GB"," TB","PB","EB","ZB","YB"],r=["KiB","MiB","GiB","TiB","PiB","EiB","ZiB","YiB"];return function(e){var i=-1,t=e;do{t/=1024,i++}while(t>1024);var l=n.useBinarySizePrefixes?r[i]:a[i];return Math.max(t,.1).toFixed(1)+" "+l}}])}(),function(e){"use strict";e.module("FileManagerApp").provider("fileManagerConfig",function(){var n={appName:"angular-filemanager v1.5",defaultLang:"en",multiLang:!0,listUrl:"bridges/php/handler.php",uploadUrl:"bridges/php/handler.php",uploadResumeSizeUrl:"bridges/php/handler.php",renameUrl:"bridges/php/handler.php",copyUrl:"bridges/php/handler.php",moveUrl:"bridges/php/handler.php",removeUrl:"bridges/php/handler.php",editUrl:"bridges/php/handler.php",getContentUrl:"bridges/php/handler.php",createFolderUrl:"bridges/php/handler.php",downloadFileUrl:"bridges/php/handler.php",downloadMultipleUrl:"bridges/php/handler.php",compressUrl:"bridges/php/handler.php",extractUrl:"bridges/php/handler.php",permissionsUrl:"bridges/php/handler.php",installUrl:"bridges/php/handler.php",installUrlUrl:"bridges/php/handler.php",downloadUrl:"bridges/php/handler.php",downloadUrlUrl:"bridges/php/handler.php",basePath:"/",searchForm:!0,sidebar:!0,breadcrumb:!0,allowedActions:{upload:!0,rename:!0,move:!0,copy:!0,edit:!0,changePermissions:!0,compress:!0,compressChooseName:!0,extract:!0,download:!0,downloadMultiple:!0,preview:!0,remove:!0,createFolder:!0,install:!0,install_url:!0,download_url:!0,pickFiles:!1,pickFolders:!1},multipleDownloadFileName:"angular-filemanager.zip",filterFileExtensions:[],showExtensionIcons:!0,showSizeForDirectories:!1,useBinarySizePrefixes:!1,downloadFilesByAjax:!0,previewImagesInModal:!0,enablePermissionsRecursive:!0,compressAsync:!1,extractAsync:!1,pickCallback:null,resumeChunkSize:10485760,isEditableFilePattern:/\.(txt|diff?|patch|svg|asc|cnf|cfg|conf|html?|.html|cfm|cgi|aspx?|ini|pl|py|md|css|cs|js|jsp|log|htaccess|htpasswd|gitignore|gitattributes|env|json|atom|eml|rss|markdown|sql|xml|xslt?|sh|rb|as|bat|cmd|cob|for|ftn|frm|frx|inc|lisp|scm|coffee|php[3-6]?|java|c|cbl|go|h|scala|vb|tmpl|lock|go|yml|yaml|tsv|lst)$/i,isImageFilePattern:/\.(jpe?g|gif|bmp|png|svg|tiff?)$/i,isExtractableFilePattern:/\.(tgz|7z|bz2|xz|gz|tar|rar|g?zip)$/i,isInstallableFilePattern:/\.(pkg)$/i,tplPath:"src/templates"};return{$get:function(){return n},set:function(a){e.extend(n,a)}}})}(angular),function(e){"use strict";angular.module("FileManagerApp").config(["$translateProvider",function(e){e.useSanitizeValueStrategy(null),e.translations("en",{filemanager:"File Manager",language:"Language",english:"English",spanish:"Spanish",portuguese:"Portuguese",french:"French",german:"German",hebrew:"Hebrew",italian:"Italian",slovak:"Slovak",chinese_tw:"Traditional Chinese",chinese_cn:"Simple Chinese",russian:"Russian",ukrainian:"Ukrainian",turkish:"Turkish",persian:"Persian",polish:"Polish",dutch:"Dutch",confirm:"Confirm",cancel:"Cancel",close:"Close",upload_files:"Upload files",files_will_uploaded_to:"Files will be uploaded to",select_files:"Select files",uploading:"Uploading",permissions:"Permissions",select_destination_folder:"Select the destination folder",source:"Source",destination:"Destination",copy_file:"Copy file",sure_to_delete:"Are you sure to delete",change_name_move:"Change name / move",enter_new_name_for:"Enter new name for",extract_item:"Extract item",extraction_started:"Extraction started in a background process",compression_started:"Compression started in a background process",enter_folder_name_for_extraction:"Enter the folder name for the extraction of",enter_file_name_for_compression:"Enter the file name for the compression of",toggle_fullscreen:"Toggle fullscreen",edit_file:"Edit file",file_content:"File content",loading:"Loading",search:"Search",create_folder:"Create folder",create:"Create",file_name:"File name",folder_name:"Folder name",install_url:"Install URL",download_url:"Download URL",url:"URL",upload:"Upload",change_permissions:"Change permissions",change:"Change",details:"Details",icons:"Icons",list:"List",name:"Name",size:"Size",actions:"Actions",date:"Date",selection:"Selection",no_files_in_folder:"No files in this folder",no_folders_in_folder:"This folder not contains children folders",select_this:"Select this",go_back:"Go back",wait:"Wait",move:"Move",download:"Download",view_item:"View item",remove:"Delete",edit:"Edit",save:"Save",copy:"Copy",rename:"Rename",extract:"Extract",compress:"Compress",install:"Install",install_with_alldebrid:"Install via AllDebrid",install_with_realdebrid:"Install via Real-Debrid",install_enable_rpi:"Install directly from URL",install_use_disk_cache:"Enable caching on disk",download_with_alldebrid:"Install via AllDebrid",download_with_realdebrid:"Install via Real-Debrid",error_invalid_filename:"Invalid filename or already exists, specify another name",error_modifying:"An error occurred modifying the file",error_deleting:"An error occurred deleting the file or folder",error_installing:"An error occurred installing the file",error_renaming:"An error occurred renaming the file",error_copying:"An error occurred copying the file",error_compressing:"An error occurred compressing the file or folder",error_extracting:"An error occurred extracting the file",error_creating_folder:"An error occurred creating the folder",error_getting_content:"An error occurred getting the content of the file",error_changing_perms:"An error occurred changing the permissions of the file",error_uploading_files:"An error occurred uploading files",error_installing_url:"An error occurred installing url",error_download_url:"An error occurred downloading url",sure_to_start_compression_with:"Are you sure to compress",owner:"Owner",group:"Group",others:"Others",read:"Read",write:"Write",exec:"Exec",original:"Original",changes:"Changes",recursive:"Recursive",preview:"Item preview",open:"Open",these_elements:"these {{total}} elements",new_folder:"New folder",download_as_zip:"Download as ZIP"}),e.translations("nl",{filemanager:"Bestand beheerder",language:"Taal",english:"Engels",spanish:"Spaans",portuguese:"Portugees",french:"Frans",german:"Duits",hebrew:"Hebrews",slovak:"Slowakije",chinese:"Chinees",russian:"Russisch",ukrainian:"Oekraïens",turkish:"Turks",persian:"Perzisch",confirm:"Bevestigen",cancel:"Annuleren",close:"Sluiten",upload_files:"Bestanden uploaden",files_will_uploaded_to:"Bestanden worden geüpload naar",select_files:"Selecteer bestanden",uploading:"Uploaden",permissions:"Rechten",select_destination_folder:"Selecteer de map van bestemming",source:"Bron",destination:"Doel",copy_file:"Kopieer bestand",sure_to_delete:"Weet je zeker dat je wilt verwijderen",change_name_move:"Hernoemen / verplaatsen",enter_new_name_for:"Typ een nieuwe naam voor",extract_item:"Uitpakken",extraction_started:"Uitpakken gestart als achtergrond proces",compression_started:"Inpakken gestart als achtergrond proces",enter_folder_name_for_extraction:"Typ een map naar voor het uitpakken van",enter_file_name_for_compression:"Typ een bestandsnaam voor het inpakken van",toggle_fullscreen:"Volledigscherm",edit_file:"Bewerk bestand",file_content:"Bestandsinhoud",loading:"Laden",search:"Zoeken",create_folder:"Maak map",create:"Maak",file_name:"Bestandsnaam",folder_name:"Map naam",install_url:"Installeren URL",download_url:"Download URL",url:"URL",upload:"Uploaden",change_permissions:"Rechten aanpassen",change:"Aanpassen",details:"Details",icons:"Iconen",list:"Lijst",name:"Naam",size:"Grootte",actions:"Acties",date:"Datum",no_files_in_folder:"Geen bestanden in deze map",no_folders_in_folder:"Deze map bevat geen submappen",select_this:"Selecteer dit",go_back:"Ga terug",wait:"Wacht",move:"Verplaats",download:"Download",view_item:"Bekijk item",remove:"Verwijderen",edit:"Bewerken",save:"Bewerken",copy:"Kopiëren",rename:"Hernoemen",extract:"Uitpakken",compress:"Inpakken",install:"Installeren",install_with_alldebrid:"Installeren via AllDebrid",install_with_realdebrid:"Installeren via Real-Debrid",install_enable_rpi:"Rechtstreeks vanaf URL installeren",install_use_disk_cache:"Schakel caching op schijf in",download_with_alldebrid:"Download via AllDebrid",download_with_realdebrid:"Download via Real-Debrid",error_invalid_filename:"Ongeldige bestandsnaam of bestand al aanwezig, kies een andere naam",error_modifying:"Er is een fout opgetreden met het bewerken van het bestand",error_deleting:"Er is een fout opgetreden tijdens het verwijderen van de bestand of map",error_renaming:"Er is een fout opgetreden tijdens het hernoemen van het bestand",error_copying:"Er is een fout opgetreden tijdens het kopiëren van het bestand",error_compressing:"Er is een fout opgetreden tijdens het inpakken van het bestand of map",error_extracting:"Er is een fout opgetreden tijdens het uitpakken van het bestand",error_creating_folder:"Er is een fout opgetreden tijdens het maken van de map",error_getting_content:"Er is een fout opgetreden tijdens het ophalen van de inhoud van het bestand",error_changing_perms:"Er is een fout opgetreden tijdens het aanpassen van de rechten van het bestand",error_uploading_files:"Er is een fout opgetreden tijdens het uploaden van de bestanden",error_installing_url:"Er is een fout opgetreden bij het installeren van de URL",error_download_url:"An error occurred downloading url",sure_to_start_compression_with:"Weet je zeker dat je dit wilt inpakken",owner:"Eigenaar",group:"Groep",others:"Andere",read:"Lees",write:"Schrijf",exec:"Uitvoeren",original:"Origineel",changes:"Aanpassingen",recursive:"Recursieve",preview:"Item bekijken",open:"Openen",these_elements:"Deze {{total}} elementen",new_folder:"Nieuwe map",download_as_zip:"Download als ZIP"}),e.translations("he",{filemanager:"מנהל קבצים",language:"שפה",english:"אנגלית",spanish:"ספרדית",portuguese:"פורטוגזית",french:"צרפתית",german:"גרמנית",hebrew:"עברי",italian:"איטלקי",slovak:"סלובקי",chinese_tw:"סינית מסורתית",chinese_cn:"סינית פשוטה",russian:"רוּסִי",ukrainian:"אוקראיני",turkish:"טורקי",persian:"פַּרסִית",polish:"פולני",confirm:"אשר",cancel:"בטל",close:"סגור",upload_files:"העלה קבצים",files_will_uploaded_to:"הקבצים יעלו ל",select_files:"בחר קבצים",uploading:"מעלה",permissions:"הרשאות",select_destination_folder:"בחר תיקיית יעד",source:"מקור",destination:"יעד",copy_file:"העתק קובץ",sure_to_delete:"האם אתה בטוח שברצונך למחוק",change_name_move:"שנה שם / הזז",enter_new_name_for:"הקלד שם חדש עבור",extract_item:"חלץ פריט",extraction_started:"תהליך החילוץ מתבצע ברקע",compression_started:"תהליך הכיווץ מתבצע ברקע",enter_folder_name_for_extraction:"הקלד שם תיקייה לחילוץ עבור",enter_file_name_for_compression:"הזן את שם הקובץ עבור הדחיסה של",toggle_fullscreen:"הפעל/בטל מסך מלא",edit_file:"ערוך קובץ",file_content:"תוכן הקובץ",loading:"טוען",search:"חפש",create_folder:"צור תיקייה",create:"צור",file_name:"שם הקובץ",folder_name:"שם תיקייה",install_url:"להתקין URL",download_url:"הורד URL",url:"URL",upload:"העלה",change_permissions:"שנה הרשאות",change:"שנה",details:"פרטים",icons:"סמלים",list:"רשימה",name:"שם",size:"גודל",actions:"פעולות",date:"תאריך",selection:"בְּחִירָה",no_files_in_folder:"אין קבצים בתיקייה זו",no_folders_in_folder:"התיקייה הזו אינה כוללת תתי תיקיות",select_this:"בחר את זה",go_back:"חזור אחורה",wait:"חכה",move:"הזז",download:"הורד",view_item:"הצג פריט",remove:"מחק",edit:"ערוך",save:"ערוך",copy:"העתק",rename:"שנה שם",extract:"חלץ",compress:"כווץ",install:"להתקין",install_with_alldebrid:"התקן דרך AllDebrid",install_with_realdebrid:"התקן דרך Real-Debrid",install_enable_rpi:"התקן ישירות מ-URL",install_use_disk_cache:"אפשר אחסון במטמון בדיסק",download_with_alldebrid:"הורד via AllDebrid",download_with_realdebrid:"הורד via Real-Debrid",error_invalid_filename:"שם קובץ אינו תקין או קיים, ציין שם קובץ אחר",error_modifying:"התרחשה שגיאה בעת שינוי הקובץ",error_deleting:"התרחשה שגיאה בעת מחיקת הקובץ או התיקייה",error_renaming:"התרחשה שגיאה בעת שינוי שם הקובץ",error_copying:"התרחשה שגיאה בעת העתקת הקובץ",error_compressing:"התרחשה שגיאה בעת כיווץ הקובץ או התיקייה",error_extracting:"התרחשה שגיאה בעת חילוץ הקובץ או התיקייה",error_creating_folder:"התרחשה שגיאה בעת יצירת התיקייה",error_getting_content:"התרחשה שגיאה בעת בקשת תוכן הקובץ",error_changing_perms:"התרחשה שגיאה בעת שינוי הרשאות הקובץ",error_uploading_files:"התרחשה שגיאה בעת העלאת הקבצים",error_installing_url:"אירעה שגיאה בהתקנת URL",error_download_url:"אירעה שגיאה בהורדת כתובת ה-URL",sure_to_start_compression_with:"האם אתה בטוח שברצונך לכווץ",owner:"בעלים",group:"קבוצה",others:"אחרים",read:"קריאה",write:"כתיבה",exec:"הרצה",original:"מקורי",changes:"שינויים",recursive:"רקורסיה",preview:"הצגת פריט",open:"פתח",new_folder:"תיקיה חדשה",download_as_zip:"להוריד כמו"}),e.translations("pt",{filemanager:"Gerenciador de arquivos",language:"Língua",english:"Inglês",spanish:"Espanhol",portuguese:"Portugues",french:"Francês",german:"Alemão",hebrew:"Hebraico",italian:"Italiano",slovak:"Eslovaco",chinese_tw:"Tradicional Chinesa",chinese_cn:"Chinês Simplificado",russian:"Russo",ukrainian:"Ucraniano",turkish:"Turco",persian:"Persa",polish:"Polonês",confirm:"Confirmar",cancel:"Cancelar",close:"Fechar",upload_files:"Carregar arquivos",files_will_uploaded_to:"Os arquivos serão enviados para",select_files:"Selecione os arquivos",uploading:"Carregar",permissions:"Autorizações",select_destination_folder:"Selecione a pasta de destino",source:"Origem",destination:"Destino",copy_file:"Copiar arquivo",sure_to_delete:"Tem certeza de que deseja apagar",change_name_move:"Renomear / mudança",enter_new_name_for:"Digite o novo nome para",extract_item:"Extrair arquivo",extraction_started:"A extração começou em um processo em segundo plano",compression_started:"A compressão começou em um processo em segundo plano",enter_folder_name_for_extraction:"Digite o nome da pasta para a extração de",enter_file_name_for_compression:"Digite o nome do arquivo para a compressão de",toggle_fullscreen:"Ativar/desativar tela cheia",edit_file:"Editar arquivo",file_content:"Conteúdo do arquivo",loading:"Carregando",search:"Localizar",create_folder:"Criar Pasta",create:"Criar",file_name:"Nome do arquivo",folder_name:"Nome da pasta",install_url:"Instalar URL",download_url:"Baixar URL",url:"URL",upload:"Fazer",change_permissions:"Alterar permissões",change:"Alterar",details:"Detalhes",icons:"Icones",list:"Lista",name:"Nome",size:"Tamanho",actions:"Ações",date:"Data",selection:"Seleção",no_files_in_folder:"Não há arquivos nesta pasta",no_folders_in_folder:"Esta pasta não contém subpastas",select_this:"Selecione esta",go_back:"Voltar",wait:"Espere",move:"Mover",download:"Baixar",view_item:"Veja o arquivo",remove:"Excluir",edit:"Editar",save:"Editar",copy:"Copiar",rename:"Renomear",extract:"Extrair",compress:"Comprimir",install:"Instalar",install_with_alldebrid:"Instalar via AllDebrid",install_with_realdebrid:"Instalar via Real-Debrid",install_enable_rpi:"Instalar directamente desde la URL",install_use_disk_cache:"Habilitar cache no disco",download_with_alldebrid:"Baixe via AllDebrid",download_with_realdebrid:"Baixe via Real-Debrid",error_invalid_filename:"Nome do arquivo inválido ou nome de arquivo já existe, especifique outro nome",error_modifying:"Ocorreu um erro ao modificar o arquivo",error_deleting:"Ocorreu um erro ao excluir o arquivo ou pasta",error_renaming:"Ocorreu um erro ao mudar o nome do arquivo",error_copying:"Ocorreu um erro ao copiar o arquivo",error_compressing:"Ocorreu um erro ao comprimir o arquivo ou pasta",error_extracting:"Ocorreu um erro ao extrair o arquivo",error_creating_folder:"Ocorreu um erro ao criar a pasta",error_getting_content:"Ocorreu um erro ao obter o conteúdo do arquivo",error_changing_perms:"Ocorreu um erro ao alterar as permissões do arquivo",error_uploading_files:"Ocorreu um erro upload de arquivos",error_installing_url:"Ocorreu um erro ao instalar o URL",error_download_url:"Ocorreu um erro ao baixar o URL.",sure_to_start_compression_with:"Tem certeza que deseja comprimir",owner:"Proprietário",group:"Grupo",others:"Outros",read:"Leitura",write:"Escrita ",exec:"Execução",original:"Original",changes:"Mudanças",recursive:"Recursiva",preview:"Visualização",open:"Abrir",these_elements:"estes {{total}} elements",new_folder:"Nova pasta",download_as_zip:"Download como ZIP"}),e.translations("es",{filemanager:"Administrador de archivos",language:"Idioma",english:"Ingles",spanish:"Español",portuguese:"Portugues",french:"Francés",german:"Alemán",hebrew:"Hebreo",italian:"Italiano",slovak:"Eslovaco",chinese_tw:"Tradicional China",chinese_cn:"Chino Simplificado",russian:"Ruso",ukrainian:"Ucraniano",turkish:"Turco",persian:"Persa",polish:"Polaco",confirm:"Confirmar",cancel:"Cancelar",close:"Cerrar",upload_files:"Subir archivos",files_will_uploaded_to:"Los archivos seran subidos a",select_files:"Seleccione los archivos",uploading:"Subiendo",permissions:"Permisos",select_destination_folder:"Seleccione la carpeta de destino",source:"Origen",destination:"Destino",copy_file:"Copiar archivo",sure_to_delete:"Esta seguro que desea eliminar",change_name_move:"Renombrar / mover",enter_new_name_for:"Ingrese el nuevo nombre para",extract_item:"Extraer archivo",extraction_started:"La extraccion ha comenzado en un proceso de segundo plano",compression_started:"La compresion ha comenzado en un proceso de segundo plano",enter_folder_name_for_extraction:"Ingrese el nombre de la carpeta para la extraccion de",enter_file_name_for_compression:"Ingrese el nombre del archivo para la compresion de",toggle_fullscreen:"Activar/Desactivar pantalla completa",edit_file:"Editar archivo",file_content:"Contenido del archivo",loading:"Cargando",search:"Buscar",create_folder:"Crear carpeta",create:"Crear",file_name:"Nombre del archivo",folder_name:"Nombre de la carpeta",install_url:"Instalar URL",download_url:"Descargar URL",url:"URL",upload:"Subir",change_permissions:"Cambiar permisos",change:"Cambiar",details:"Detalles",icons:"Iconos",list:"Lista",name:"Nombre",size:"Tamaño",actions:"Acciones",date:"Fecha",selection:"Selección",no_files_in_folder:"No hay archivos en esta carpeta",no_folders_in_folder:"Esta carpeta no contiene sub-carpetas",select_this:"Seleccionar esta",go_back:"Volver",wait:"Espere",move:"Mover",download:"Descargar",view_item:"Ver archivo",remove:"Eliminar",edit:"Editar",save:"Editar",copy:"Copiar",rename:"Renombrar",extract:"Extraer",compress:"Comprimir",install:"Instalar",install_with_alldebrid:"Instalar a través de AllDebrid",install_with_realdebrid:"Instalar a través de Real-Debrid",install_enable_rpi:"Instalar directamente desde la URL",install_use_disk_cache:"Habilitar el almacenamiento en caché en el disco",download_with_alldebrid:"Descargar a través de AllDebrid",download_with_realdebrid:"Descargar a través de Real-Debrid",error_invalid_filename:"El nombre del archivo es invalido o ya existe",error_modifying:"Ocurrio un error al intentar modificar el archivo",error_deleting:"Ocurrio un error al intentar eliminar el archivo",error_renaming:"Ocurrio un error al intentar renombrar el archivo",error_copying:"Ocurrio un error al intentar copiar el archivo",error_compressing:"Ocurrio un error al intentar comprimir el archivo",error_extracting:"Ocurrio un error al intentar extraer el archivo",error_creating_folder:"Ocurrio un error al intentar crear la carpeta",error_getting_content:"Ocurrio un error al obtener el contenido del archivo",error_changing_perms:"Ocurrio un error al cambiar los permisos del archivo",error_uploading_files:"Ocurrio un error al subir archivos",error_installing_url:"Ocurrió un error al instalar la URL",error_download_url:"Se produjo un error al descargar la URL.",sure_to_start_compression_with:"Esta seguro que desea comprimir",owner:"Propietario",group:"Grupo",others:"Otros",read:"Lectura",write:"Escritura",exec:"Ejecucion",original:"Original",changes:"Cambios",recursive:"Recursivo",preview:"Vista previa",open:"Abrir",these_elements:"estos {{total}} elementos",new_folder:"Nueva carpeta",download_as_zip:"Descargar como ZIP"}),e.translations("fr",{filemanager:"Gestionnaire de fichier",language:"Langue",english:"Anglais",spanish:"Espagnol",portuguese:"Portugais",french:"Français",german:"Allemand",hebrew:"Hébreu",italian:"Italien",slovak:"Slovaque",chinese_tw:"Traditionnelle Chinoise",chinese_cn:"Chinois Simplifié",russian:"Russe",ukrainian:"Ukrainien",turkish:"Turc",persian:"Persan",polish:"Polonais",confirm:"Confirmer",cancel:"Annuler",close:"Fermer",upload_files:"Télécharger des fichiers",files_will_uploaded_to:"Les fichiers seront uploadé dans",select_files:"Sélectionnez les fichiers",uploading:"Upload en cours",permissions:"Permissions",select_destination_folder:"Sélectionné le dossier de destination",source:"Source",destination:"Destination",copy_file:"Copier le fichier",sure_to_delete:"Êtes-vous sûr de vouloir supprimer",change_name_move:"Renommer / Déplacer",enter_new_name_for:"Entrer le nouveau nom pour",extract_item:"Extraires les éléments",extraction_started:"L'extraction a démarré en tâche de fond",compression_started:"La compression a démarré en tâche de fond",enter_folder_name_for_extraction:"Entrer le nom du dossier pour l'extraction de",enter_file_name_for_compression:"Entrez le nom de fichier pour la compression de",toggle_fullscreen:"Basculer en plein écran",edit_file:"Éditer le fichier",file_content:"Contenu du fichier",loading:"Chargement en cours",search:"Recherche",create_folder:"Créer un dossier",create:"Créer",file_name:"Nom de fichier",folder_name:"Nom du dossier",install_url:"Installer URL",download_url:"Télécharger URL",url:"URL",upload:"Upload",change_permissions:"Changer les permissions",change:"Changer",details:"Details",icons:"Icons",list:"Liste",name:"Nom",size:"Taille",actions:"Actions",date:"Date",selection:"Sélection",no_files_in_folder:"Aucun fichier dans ce dossier",no_folders_in_folder:"Ce dossier ne contiens pas de dossier",select_this:"Sélectionner",go_back:"Retour",wait:"Patienter",move:"Déplacer",download:"Télécharger",view_item:"Voir l'élément",remove:"Supprimer",edit:"Éditer",save:"Éditer",copy:"Copier",rename:"Renommer",extract:"Extraire",compress:"Compresser",install:"Installer",install_with_alldebrid:"Installer via AllDebrid",install_with_realdebrid:"Installer via Real-Debrid",install_enable_rpi:"Installer directement à partir de l'URL",install_use_disk_cache:"Activer la mise en cache sur le disque",download_with_alldebrid:"Télécharger via AllDebrid",download_with_realdebrid:"Télécharger via Real-Debrid",error_invalid_filename:"Nom de fichier invalide ou déjà existant, merci de spécifier un autre nom",error_modifying:"Une erreur est survenue pendant la modification du fichier",error_deleting:"Une erreur est survenue pendant la suppression du fichier ou du dossier",error_renaming:"Une erreur est survenue pendant le renommage du fichier",error_copying:"Une erreur est survenue pendant la copie du fichier",error_compressing:"Une erreur est survenue pendant la compression du fichier ou du dossier",error_extracting:"Une erreur est survenue pendant l'extraction du fichier",error_creating_folder:"Une erreur est survenue pendant la création du dossier",error_getting_content:"Une erreur est survenue pendant la récupération du contenu du fichier",error_changing_perms:"Une erreur est survenue pendant le changement des permissions du fichier",error_uploading_files:"Une erreur est survenue pendant l'upload des fichiers",error_installing_url:"Une erreur s'est produite lors de l'installation de l'URL",error_download_url:"Une erreur s'est produite lors du téléchargement de l'URL.",sure_to_start_compression_with:"Êtes-vous sûre de vouloir compresser",owner:"Propriétaire",group:"Groupe",others:"Autres",read:"Lecture",write:"Écriture",exec:"Éxécution",original:"Original",changes:"Modifications",recursive:"Récursif",preview:"Aperçu",open:"Ouvrir",these_elements:"ces {{total}} éléments",new_folder:"Nouveau dossier",download_as_zip:"Télécharger comme ZIP"}),e.translations("de",{filemanager:"Dateimanager",language:"Sprache",english:"Englisch",spanish:"Spanisch",portuguese:"Portugiesisch",french:"Französisch",german:"Deutsch",hebrew:"Hebräisch",italian:"Italienisch",slovak:"Slowakisch",chinese_tw:"Traditionelles Chinesisch",chinese_cn:"Vereinfachtes Chinesisch",russian:"Russisch",ukrainian:"Ukrainisch",turkish:"Türkisch",persian:"Persisch",polish:"Polnisch",confirm:"Bestätigen",cancel:"Abbrechen",close:"Schließen",upload_files:"Hochladen von Dateien",files_will_uploaded_to:"Dateien werden hochgeladen nach",select_files:"Wählen Sie die Dateien",uploading:"Lade hoch",permissions:"Berechtigungen",select_destination_folder:"Wählen Sie einen Zielordner",source:"Quelle",destination:"Ziel",copy_file:"Datei kopieren",sure_to_delete:"Sind Sie sicher, dass Sie die Datei löschen möchten?",change_name_move:"Namen ändern / verschieben",enter_new_name_for:"Geben Sie den neuen Namen ein für",extract_item:"Archiv entpacken",extraction_started:"Entpacken hat im Hintergrund begonnen",compression_started:"Komprimierung hat im Hintergrund begonnen",enter_folder_name_for_extraction:"Geben Sie den Verzeichnisnamen für die Entpackung an von",enter_file_name_for_compression:"Geben Sie den Dateinamen für die Kompression an von",toggle_fullscreen:"Vollbild umschalten",edit_file:"Datei bearbeiten",file_content:"Dateiinhalt",loading:"Lade",search:"Suche",create_folder:"Ordner erstellen",create:"Erstellen",file_name:"Dateiname",folder_name:"Verzeichnisname",install_url:"Installieren URL",download_url:"Herunterladen URL",url:"URL",upload:"Hochladen",change_permissions:"Berechtigungen ändern",change:"Ändern",details:"Details",icons:"Symbolansicht",list:"Listenansicht",name:"Name",size:"Größe",actions:"Aktionen",date:"Datum",selection:"Auswahl",no_files_in_folder:"Keine Dateien in diesem Ordner",no_folders_in_folder:"Dieser Ordner enthält keine Unterordner",select_this:"Auswählen",go_back:"Zurück",wait:"Warte",move:"Verschieben",download:"Herunterladen",view_item:"Datei ansehen",remove:"Löschen",edit:"Bearbeiten",save:"Bearbeiten",copy:"Kopieren",rename:"Umbenennen",extract:"Entpacken",compress:"Komprimieren",install:"Installieren",install_with_alldebrid:"Installation über AllDebrid",install_with_realdebrid:"Installation über Real-Debrid",install_enable_rpi:"Direkt von der URL installieren",install_use_disk_cache:"Aktivieren Sie das Caching auf der Festplatte",download_with_alldebrid:"Herunterladen via AllDebrid",download_with_realdebrid:"Herunterladen via Real-Debrid",error_invalid_filename:"Ungültiger Dateiname oder existiert bereits",error_modifying:"Beim Bearbeiten der Datei ist ein Fehler aufgetreten",error_deleting:"Beim Löschen der Datei oder des Ordners ist ein Fehler aufgetreten",error_renaming:"Beim Umbennenen der Datei ist ein Fehler aufgetreten",error_copying:"Beim Kopieren der Datei ist ein Fehler aufgetreten",error_compressing:"Beim Komprimieren der Datei oder des Ordners ist ein Fehler aufgetreten",error_extracting:"Beim Entpacken der Datei ist ein Fehler aufgetreten",error_creating_folder:"Beim Erstellen des Ordners ist ein Fehler aufgetreten",error_getting_content:"Beim Laden des Dateiinhalts ist ein Fehler aufgetreten",error_changing_perms:"Beim Ändern der Dateiberechtigungen ist ein Fehler aufgetreten",error_uploading_files:"Beim Hochladen der Dateien ist ein Fehler aufgetreten",error_installing_url:"Beim Installieren der URL ist ein Fehler aufgetreten",error_download_url:"Beim Herunterladen der URL ist ein Fehler aufgetreten.",sure_to_start_compression_with:"Möchten Sie die Datei wirklich komprimieren?",owner:"Besitzer",group:"Gruppe",others:"Andere",read:"Lesen",write:"Schreiben",exec:"Ausführen",original:"Original",changes:"Änderungen",recursive:"Rekursiv",preview:"Dateivorschau",open:"Öffnen",these_elements:"diese {{total}} elemente",new_folder:"Neuer ordner",download_as_zip:"Download als ZIP"}),e.translations("sk",{filemanager:"Správca súborov",language:"Jazyk",english:"Angličtina",spanish:"Španielčina",portuguese:"Portugalčina",french:"Francúzština",german:"Nemčina",hebrew:"Hebrejčina",italian:"Italština",slovak:"Slovenčina",chinese_tw:"Tradičná Čínska",chinese_cn:"Zjednodušená Čínština",russian:"Ruský",ukrainian:"Ukrajinský",turkish:"Turecký",persian:"Perzský",polish:"Poľský",confirm:"Potvrdiť",cancel:"Zrušiť",close:"Zavrieť",upload_files:"Nahrávať súbory",files_will_uploaded_to:"Súbory budú nahrané do",select_files:"Vybrať súbory",uploading:"Nahrávanie",permissions:"Oprávnenia",select_destination_folder:"Vyberte cieľový príečinok",source:"Zdroj",destination:"Cieľ",copy_file:"Kopírovať súbor",sure_to_delete:"Ste si istý, že chcete vymazať",change_name_move:"Premenovať / Premiestniť",enter_new_name_for:"Zadajte nové meno pre",extract_item:"Rozbaliť položku",extraction_started:"Rozbaľovanie začalo v procese na pozadí",compression_started:"Kompresia začala v procese na pzoadí",enter_folder_name_for_extraction:"Zadajte názov priečinka na rozbalenie",enter_file_name_for_compression:"Zadajte názov súboru pre kompresiu",toggle_fullscreen:"Prepnúť režim na celú obrazovku",edit_file:"Upraviť súbor",file_content:"Obsah súboru",loading:"Načítavanie",search:"Hľadať",create_folder:"Vytvoriť priečinok",create:"Vytvoriť",file_name:"Názov súboru",folder_name:"Názov priećinka",install_url:"Inštalácia URL",download_url:"Stiahnuť URL",url:"URL",upload:"Nahrať",change_permissions:"Zmeniť oprávnenia",change:"Zmeniť",details:"Podrobnosti",icons:"Ikony",list:"Zoznam",name:"Meno",size:"Veľkosť",actions:"Akcie",date:"Dátum",selection:"Výber",no_files_in_folder:"V tom to priečinku nie sú žiadne súbory",no_folders_in_folder:"Tento priečinok neobsahuje žiadne ďalšie priećinky",select_this:"Vybrať tento",go_back:"Ísť späť",wait:"Počkajte",move:"Presunúť",download:"Stiahnuť",view_item:"Zobraziť položku",remove:"Vymazať",edit:"Upraviť",save:"Upraviť",copy:"Kopírovať",rename:"Premenovať",extract:"Rozbaliť",compress:"Komprimovať",install:"Inštalácia",install_with_alldebrid:"Nainštalujte cez AllDebrid",install_with_realdebrid:"Nainštalujte cez Real-Debrid",install_enable_rpi:"Nainštalujte priamo z adresy URL",install_use_disk_cache:"Povoliť ukladanie do vyrovnávacej pamäte na disku",download_with_alldebrid:"Stiahnuť cez AllDebrid",download_with_realdebrid:"Stiahnuť cez Real-Debrid",error_invalid_filename:"Neplatné alebo duplicitné meno súboru, vyberte iné meno",error_modifying:"Vyskytla sa chyba pri upravovaní súboru",error_deleting:"Vyskytla sa chyba pri mazaní súboru alebo priečinku",error_renaming:"Vyskytla sa chyba pri premenovaní súboru",error_copying:"Vyskytla sa chyba pri kopírovaní súboru",error_compressing:"Vyskytla sa chyba pri komprimovaní súboru alebo priečinka",error_extracting:"Vyskytla sa chyba pri rozbaľovaní súboru",error_creating_folder:"Vyskytla sa chyba pri vytváraní priečinku",error_getting_content:"Vyskytla sa chyba pri získavaní obsahu súboru",error_changing_perms:"Vyskytla sa chyba pri zmene oprávnení súboru",error_uploading_files:"Vyskytla sa chyba pri nahrávaní súborov",error_installing_url:"Pri inštalácii adresy URL sa vyskytla chyba",error_download_url:"Pri sťahovaní adresy URL sa vyskytla chyba",sure_to_start_compression_with:"Ste si istý, že chcete komprimovať",owner:"Vlastník",group:"Skupina",others:"Ostatní",read:"Čítanie",write:"Zapisovanie",exec:"Spúštanie",original:"Originál",changes:"Zmeny",recursive:"Rekurzívne",preview:"Náhľad položky",open:"Otvoriť",these_elements:"týchto {{total}} prvkov",new_folder:"Nový priečinok",download_as_zip:"Stiahnuť ako ZIP"}),e.translations("zh_cn",{filemanager:"文档管理器",language:"语言",english:"英语",spanish:"西班牙语",portuguese:"葡萄牙语",french:"法语",german:"德语",hebrew:"希伯来语",italian:"意大利",slovak:"斯洛伐克语",chinese_tw:"正体中文",chinese_cn:"简体中文",russian:"俄語",ukrainian:"烏克蘭",turkish:"土耳其",persian:"波斯語",polish:"波兰语",confirm:"确定",cancel:"取消",close:"关闭",upload_files:"上传文件",files_will_uploaded_to:"文件将上传到",select_files:"选择文件",uploading:"上传中",permissions:"权限",select_destination_folder:"选择目标文件",source:"源自",destination:"目的地",copy_file:"复制文件",sure_to_delete:"确定要删除?",change_name_move:"改名或移动?",enter_new_name_for:"输入新的名称",extract_item:"解压",extraction_started:"解压已经在后台开始",compression_started:"压缩已经在后台开始",enter_folder_name_for_extraction:"输入解压的目标文件夹",enter_file_name_for_compression:"输入要压缩的文件名",toggle_fullscreen:"切换全屏",edit_file:"编辑文件",file_content:"文件内容",loading:"加载中",search:"搜索",create_folder:"创建文件夹",create:"创建",file_name:"文件名",folder_name:"文件夹名称",install_url:"安装 URL",download_url:"下载地址",url:"URL",upload:"上传",change_permissions:"修改权限",change:"修改",details:"详细信息",icons:"图标",list:"列表",name:"名称",size:"尺寸",actions:"操作",date:"日期",selection:"选择",no_files_in_folder:"此文件夹没有文件",no_folders_in_folder:"此文件夹不包含子文件夹",select_this:"选择此文件",go_back:"后退",wait:"等待",move:"移动",download:"下载",view_item:"查看子项",remove:"删除",edit:"编辑",save:"编辑",copy:"复制",rename:"重命名",extract:"解压",compress:"压缩",install:"安装",install_with_alldebrid:"通过 AllDebrid 安装",install_with_realdebrid:"通过 Real-Debrid 安装",install_enable_rpi:"直接从 URL 安装",install_use_disk_cache:"启用磁盘缓存",download_with_alldebrid:"通过 AllDebrid 下载",download_with_realdebrid:"通过 Real-Debrid 下载",error_invalid_filename:"非法文件名或文件已经存在, 请指定其它名称",error_modifying:"修改文件出错",error_deleting:"删除文件或文件夹出错",error_renaming:"重命名文件出错",error_copying:"复制文件出错",error_compressing:"压缩文件或文件夹出错",error_extracting:"解压文件出错",error_creating_folder:"创建文件夹出错",error_getting_content:"获取文件内容出错",error_changing_perms:"修改文件权限出错",error_uploading_files:"上传文件出错",error_installing_url:"安装 URL 时出错",error_download_url:"下载网址时出错",sure_to_start_compression_with:"确定要压缩?",owner:"拥有者",group:"群组",others:"其他",read:"读取",write:"写入",exec:"执行",original:"原始",changes:"变化",recursive:"递归",preview:"成员预览",open:"打开",these_elements:"共 {{total}} 个",new_folder:"新文件夹",download_as_zip:"下载的ZIP"}),e.translations("zh_tw",{filemanager:"檔案管理員",language:"語言",english:"英語",spanish:"西班牙語",portuguese:"葡萄牙語",french:"法語",german:"德語",hebrew:"希伯來語",italian:"意大利",slovak:"斯洛伐克語",chinese_tw:"正體中文",chinese_cn:"簡體中文",russian:"俄語",ukrainian:"烏克蘭",turkish:"土耳其",persian:"波斯語",polish:"波蘭語",confirm:"確定",cancel:"取消",close:"關閉",upload_files:"上傳檔案",files_will_uploaded_to:"檔案將上傳到",select_files:"選擇檔案",uploading:"上傳中",permissions:"權限",select_destination_folder:"選擇目標檔案",source:"來自",destination:"目的地",copy_file:"複製檔案",sure_to_delete:"確定要刪除?",change_name_move:"更名或移動?",enter_new_name_for:"輸入新的名稱",extract_item:"解壓",extraction_started:"解壓已經在後台開始",compression_started:"壓縮已經在後台開始",enter_folder_name_for_extraction:"輸入解壓的目標資料匣",enter_file_name_for_compression:"輸入要壓縮的檔名",toggle_fullscreen:"切換全螢幕",edit_file:"編輯檔案",file_content:"檔案內容",loading:"載入中",search:"尋找",create_folder:"建立資料匣",create:"建立",file_name:"檔案名稱",folder_name:"資料匣名稱",install_url:"安裝 URL",download_url:"下載地址",url:"URL",upload:"上傳",change_permissions:"修改權限",change:"修改",details:"詳細內容",icons:"圖示",list:"列表",name:"名稱",size:"大小",actions:"操作",date:"日期",selection:"選擇",no_files_in_folder:"此資料匣沒有文件",no_folders_in_folder:"此資料匣不包含子資料匣",select_this:"選擇此資料匣",go_back:"後退",wait:"等待",move:"移動",download:"下載",view_item:"檢視",remove:"刪除",edit:"存檔",save:"存檔",copy:"複製",rename:"更改名稱",extract:"解壓",compress:"壓縮",install:"安裝",install_with_alldebrid:"通過 AllDebrid 安裝",install_with_realdebrid:"通過 Real-Debrid 安裝",install_enable_rpi:"直接從 URL 安裝",install_use_disk_cache:"啟用磁碟快取",download_with_alldebrid:"透過 AllDebrid 下載",download_with_realdebrid:"透過 Real-Debrid 下載",error_invalid_filename:"非法檔名或檔案已經存在, 請指定其它檔名",error_modifying:"修改檔案出錯",error_deleting:"刪除檔案或資料夾出錯",error_renaming:"更改名稱發生出錯",error_copying:"複製檔案出錯",error_compressing:"壓縮檔案或資料匣出錯",error_extracting:"解壓檔案出錯",error_creating_folder:"建立資料匣出錯",error_getting_content:"獲取檔案內容出錯",error_changing_perms:"修改檔案權限出錯",error_uploading_files:"上傳檔案出錯",error_installing_url:"安裝 URL 時出錯",error_download_url:"下載網址時發生錯誤",sure_to_start_compression_with:"確定要壓縮?",owner:"擁有者",group:"群組",others:"其他",read:"讀取",write:"寫入",exec:"執行",original:"現行",changes:"變更為",recursive:"包含所有子資料匣",preview:"預覽",open:"開啟",these_elements:"共 {{total}} 個",new_folder:"新資料匣",download_as_zip:"以ZIP下載"}),e.translations("ru",{filemanager:"Файловый менеджер",language:"Язык",english:"Английский",spanish:"Испанский",portuguese:"Португальский",french:"Французкий",german:"Немецкий",hebrew:"Хинди",italian:"итальянский",slovak:"Словацкий",chinese_tw:"Традиционный Китайский",chinese_cn:"Упрощенный Китайский",russian:"русский",ukrainian:"украинец",turkish:"турецкий",persian:"персидский",polish:"Польский",confirm:"Подьвердить",cancel:"Отменить",close:"Закрыть",upload_files:"Загрузка файлов",files_will_uploaded_to:"Файлы будут загружены в: ",select_files:"Выберите файлы",uploading:"Загрузка",permissions:"Разрешения",select_destination_folder:"Выберите папку назначения",source:"Источкик",destination:"Цель",copy_file:"Скопировать файл",sure_to_delete:"Действительно удалить?",change_name_move:"Переименовать / переместить",enter_new_name_for:"Новое имя для",extract_item:"Извлечь",extraction_started:"Извлечение начато",compression_started:"Сжатие начато",enter_folder_name_for_extraction:"Извлечь в укананную папку",enter_file_name_for_compression:"Введите имя архива",toggle_fullscreen:"На весь экран",edit_file:"Редактировать",file_content:"Содержимое файла",loading:"Загрузка",search:"Поиск",create_folder:"Создать папку",create:"Создать",file_name:"Имя файла",folder_name:"Имя папки",install_url:"установить URL",download_url:"Скачать URL",url:"URL",upload:"Загрузить",change_permissions:"Изменить разрешения",change:"Изменить",details:"Свойства",icons:"Иконки",list:"Список",name:"Имя",size:"Размер",actions:"Действия",date:"Дата",selection:"выбор",no_files_in_folder:"Пустая папка",no_folders_in_folder:"Пустая папка",select_this:"Выбрать",go_back:"Назад",wait:"Подождите",move:"Переместить",download:"Скачать",view_item:"Отобразить содержимое",remove:"Удалить",edit:"Редактировать",save:"Редактировать",copy:"Скопировать",rename:"Переименовать",extract:"Извлечь",compress:"Сжать",install:"Установить",install_with_alldebrid:"Установить через AllDebrid",install_with_realdebrid:"Установить через Real-Debrid",install_enable_rpi:"Установить напрямую с URL-адреса",install_use_disk_cache:"Включить кэширование на диске",download_with_alldebrid:"Скачать через AllDebrid",download_with_realdebrid:"Скачать через Real-Debrid",error_invalid_filename:"Имя неверное или уже существует, выберите другое",error_modifying:"Произошла ошибка при модифицировании файла",error_deleting:"Произошла ошибка при удалении",error_renaming:"Произошла ошибка при переименовании файла",error_copying:"Произошла ошибка при копировании файла",error_compressing:"Произошла ошибка при сжатии",error_extracting:"Произошла ошибка при извлечении",error_creating_folder:"Произошла ошибка при создании папки",error_getting_content:"Произошла ошибка при получении содержимого",error_changing_perms:"Произошла ошибка при изменении разрешений",error_uploading_files:"Произошла ошибка при загрузке",error_installing_url:"Произошла ошибка при установке URL",error_download_url:"Произошла ошибка при загрузке URL-адреса.",sure_to_start_compression_with:"Действительно сжать",owner:"Владелец",group:"Группа",others:"Другие",read:"Чтение",write:"Запись",exec:"Выполнение",original:"По-умолчанию",changes:"Изменения",recursive:"Рекурсивно",preview:"Просмотр",open:"Открыть",these_elements:"всего {{total}} елементов",new_folder:"Новая папка",download_as_zip:"Download as ZIP"}),e.translations("ua",{filemanager:"Файловий менеджер",language:"Мова",english:"Англійська",spanish:"Іспанська",portuguese:"Португальська",french:"Французька",german:"Німецька",hebrew:"Хінді",italian:"італійський",slovak:"Словацька",chinese_tw:"традиційний Китайський",chinese_cn:"Cпрощена Китайська",russian:"російський",ukrainian:"український",turkish:"турецька",persian:"перський",polish:"Польська",confirm:"Підтвердити",cancel:"Відмінити",close:"Закрити",upload_files:"Завантаження файлів",files_will_uploaded_to:"Файли будуть завантажені у: ",select_files:"Виберіть файли",uploading:"Завантаження",permissions:"Дозволи",select_destination_folder:"Виберіть папку призначення",source:"Джерело",destination:"Ціль",copy_file:"Скопіювати файл",sure_to_delete:"Дійсно удалить?",change_name_move:"Перейменувати / перемістити",enter_new_name_for:"Нове ім'я для",extract_item:"Извлечь",extraction_started:"Извлечение начато",compression_started:"Архівацію почато",enter_folder_name_for_extraction:"Извлечь в укананную папку",enter_file_name_for_compression:"Введите имя архива",toggle_fullscreen:"На весь экран",edit_file:"Редагувати",file_content:"Вміст файлу",loading:"Завантаження",search:"Пошук",create_folder:"Створити папку",create:"Створити",file_name:"Ім'я файлу",folder_name:"Ім'я папки",install_url:"встановити URL",download_url:"Скачати URL",url:"URL",upload:"Завантижити",change_permissions:"Змінити дозволи",change:"Редагувати",details:"Властивості",icons:"Іконки",list:"Список",name:"Ім'я",size:"Розмір",actions:"Дії",date:"Дата",selection:"вибір",no_files_in_folder:"Пуста папка",no_folders_in_folder:"Пуста папка",select_this:"Выбрати",go_back:"Назад",wait:"Зачекайте",move:"Перемістити",download:"Скачати",view_item:"Показати вміст",remove:"Видалити",edit:"Редагувати",save:"Редагувати",copy:"Копіювати",rename:"Переіменувати",extract:"Розархівувати",compress:"Архівувати",install:"встановити",install_with_alldebrid:"Встановити через AllDebrid",install_with_realdebrid:"Встановити через Real-Debrid",install_enable_rpi:"Встановити безпосередньо з URL",install_use_disk_cache:"Увімкнути кешування на диску",download_with_alldebrid:"Встановлення через AllDebrid",download_with_realdebrid:"Встановлення через Real-Debrid",error_invalid_filename:"Ім'я певірне або вже існує, виберіть інше",error_modifying:"Виникла помилка при редагуванні файлу",error_deleting:"Виникла помилка при видаленні",error_renaming:"Виникла помилка при зміні імені файлу",error_copying:"Виникла помилка при коміюванні файлу",error_compressing:"Виникла помилка при стисненні",error_extracting:"Виникла помилка при розархівації",error_creating_folder:"Виникла помилка при створенні папки",error_getting_content:"Виникла помилка при отриманні вмісту",error_changing_perms:"Виникла помилка при зміні дозволів",error_uploading_files:"Виникла помилка при завантаженні",error_installing_url:"Під час встановлення URL сталася помилка",error_download_url:"Сталася помилка під час завантаження URL-адреси",sure_to_start_compression_with:"Дійсно стиснути",owner:"Власник",group:"Група",others:"Інші",read:"Читання",write:"Запис",exec:"Виконання",original:"За замовчуванням",changes:"Зміни",recursive:"Рекурсивно",preview:"Перегляд",open:"Відкрити",these_elements:"усього {{total}} елементів",new_folder:"Нова папка",download_as_zip:"Скачати as ZIP"}),e.translations("tr",{filemanager:"Dosya Yöneticisi",language:"Dil",english:"İngilizce",spanish:"İspanyolca",portuguese:"Portekizce",french:"Fransızca",german:"Almanca",hebrew:"İbranice",italian:"İtalyanca",slovak:"Slovakça",chinese_tw:"Geleneksel Çin",chinese_cn:"Basitleştirilmiş Çince",russian:"Rusça",ukrainian:"Ukraynaca",turkish:"Türkçe",persian:"Farsça",polish:"Lehçe",confirm:"Onayla",cancel:"İptal Et",close:"Kapat",upload_files:"Dosya yükle",files_will_uploaded_to:"Dosyalar yüklenecektir.",select_files:"Dosya Seç",uploading:"Yükleniyor",permissions:"İzinler",select_destination_folder:"Hedef klasör seçin",source:"Kaynak",destination:"Hedef",copy_file:"Dosyayı kopyala",sure_to_delete:"Silmek istediğinden emin misin",change_name_move:"İsmini değiştir / taşı",enter_new_name_for:"Yeni ad girin",extract_item:"Dosya çıkar",extraction_started:"Çıkarma işlemi arkaplanda devam ediyor",compression_started:"Sıkıştırma işlemi arkaplanda başladı",enter_folder_name_for_extraction:"Çıkarılması için klasör adı girin",enter_file_name_for_compression:"Sıkıştırılması için dosya adı girin",toggle_fullscreen:"Tam ekran moduna geç",edit_file:"Dosyayı düzenle",file_content:"Dosya içeriği",loading:"Yükleniyor",search:"Ara",create_folder:"Klasör oluştur",create:"Oluştur",file_name:"Dosya adı",folder_name:"Klasör adı",install_url:"Düzenlemek URL",download_url:"Dİndirme URL'si",url:"URL",upload:"Yükle",change_permissions:"İzinleri değiştir",change:"Değiştir",details:"Detaylar",icons:"simgeler",list:"Liste",name:"Adı",size:"Boyutu",actions:"İşlemler",date:"Tarih",selection:"Seçim",no_files_in_folder:"Klasörde hiç dosya yok",no_folders_in_folder:"Bu klasör alt klasör içermez",select_this:"Bunu seç",go_back:"Geri git",wait:"Bekle",move:"Taşı",download:"İndir",view_item:"Dosyayı görüntüle",remove:"Sil",edit:"Düzenle",save:"Düzenle",copy:"Kopyala",rename:"Yeniden Adlandır",extract:"Çıkart",compress:"Sıkıştır",install:"Düzenlemek",install_with_alldebrid:"AllDebrid aracılığıyla yükleyin",install_with_realdebrid:"Real-Debrid aracılığıyla yükleyin",install_enable_rpi:"Doğrudan URL'den yükleyin",install_use_disk_cache:"Diskte önbelleğe almayı etkinleştir",download_with_alldebrid:"AllDebrid üzerinden yükleyin",download_with_realdebrid:"Real-Debrid üzerinden yükleyin.",error_invalid_filename:"Geçersiz dosya adı, bu dosya adına sahip dosya mevcut",error_modifying:"Dosya düzenlenirken bir hata oluştu",error_deleting:"Klasör veya dosya silinirken bir hata oluştu",error_renaming:"Dosya yeniden adlandırılırken bir hata oluştu",error_copying:"Dosya kopyalanırken bir hata oluştu",error_compressing:"Dosya veya klasör sıkıştırılırken bir hata oluştu",error_extracting:"Çıkartılırken bir hata oluştu",error_creating_folder:"Klasör oluşturulurken bir hata oluştu",error_getting_content:"Dosya detayları alınırken bir hata oluştu",error_changing_perms:"Dosyanın izini değiştirilirken bir hata oluştu",error_uploading_files:"Dosyalar yüklenirken bir hata oluştu",error_installing_url:"URL yüklenirken bir hata oluştu",error_download_url:"URL indirilirken bir hata oluştu.",sure_to_start_compression_with:"Sıkıştırmak istediğinden emin misin",owner:"Sahip",group:"Grup",others:"Diğerleri",read:"Okuma",write:"Yazma",exec:"Gerçekleştir",original:"Orjinal",changes:"Değişiklikler",recursive:"Yinemeli",preview:"Dosyayı önizle",open:"Aç",these_elements:"{{total}} eleman",new_folder:"Yeni Klasör",download_as_zip:"ZIP olarak indir"}),e.translations("fa",{filemanager:"مدیریت فایل ها",language:"زبان",english:"انگلیسی",spanish:"اسپانیایی",portuguese:"پرتغالی",french:"فرانسه",german:"آلمانی",hebrew:"عبری",italian:"ایتالیایی",slovak:"اسلواک",chinese_tw:"چینی سنتی",chinese_cn:"چینی ساده شده",russian:"روسی",ukrainian:"اوکراینی",turkish:"ترکی",persian:"فارسی",polish:"لهستانی",confirm:"تایید",cancel:"رد",close:"بستن",upload_files:"آپلود فایل",files_will_uploaded_to:"فایل ها آپلود می شوند به",select_files:"انتخاب فایل ها",uploading:"در حال آپلود",permissions:"مجوز ها",select_destination_folder:"پوشه مقصد را انتخاب کنید",source:"مبدا",destination:"مقصد",copy_file:"کپی فایل",sure_to_delete:"مطمين هستید می خواهید حذف کنید؟",change_name_move:"تغییر نام و جابجایی",enter_new_name_for:"نام جدیدی وارد کنید برای",extract_item:"خارج کردن از حالت فشرده",extraction_started:"یک پروسه در پس زمینه شروع به خارج کردن از حالت فشرده کرد",compression_started:"یک پروسه در پس زمینه شروع به فشرده سازی کرد",enter_folder_name_for_extraction:"نام پوشه مقصد برای خارج کردن از حالت فشرده را وارد کنید",enter_file_name_for_compression:"نام پوشه مقصد برای فشرده سازی را وارد کنید",toggle_fullscreen:"تعویض حالت تمام صفحه",edit_file:"ویرایش",file_content:"محتویات",loading:"در حال بارگذاری",search:"جستجو",create_folder:"پوشه جدید",create:"ساختن",file_name:"نام فایل",folder_name:"نام پوشه",install_url:"نصب URL",download_url:"دانلود URL",url:"URL",upload:"آپلود",change_permissions:"تغییر مجوز ها",change:"تغییر",details:"جزییات",icons:"آیکون ها",list:"لیست",name:"نام",size:"سایز",actions:"اعمال",date:"تاریخ",selection:"انتخاب",no_files_in_folder:"هیچ فایلی در این پوشه نیست",no_folders_in_folder:"هیچ پوشه ای داخل این پوشه قرار ندارد",select_this:"انتخاب",go_back:"بازگشت",wait:"منتظر بمانید",move:"جابجایی",download:"دانلود",view_item:"مشاهده این مورد",remove:"حذف",edit:"ویرایش",save:"ویرایش",copy:"کپی",rename:"تغییر نام",extract:"خروج از حالت فشرده",compress:"فشرده سازی",install:"ثَبَّتَ",install_with_alldebrid:"از طریق AllDebrid نصب کنید",install_with_realdebrid:"از طریق Real-Debrid نصب کنید",install_enable_rpi:"مستقیماً از URL نصب کنید",install_use_disk_cache:"کش روی دیسک را فعال کنید",download_with_alldebrid:"دانلود از طریق AllDebrid",download_with_realdebrid:"دانلود از طریق Real-Debrid",error_invalid_filename:"نام فایل مورد درست نیست و یا قبلا استفاده شده است، لطفا نام دیگری وارد کنید",error_modifying:"در هنگام تغییر فایل خطایی پیش آمد",error_deleting:"در هنگام حذف فایل خطایی پیش آمد",error_renaming:"در هنگام تغییر نام فایل خطایی پیش آمد",error_copying:"در هنگام کپی کردن فایل خطایی پیش آمد",error_compressing:"در هنگام فشرده سازی فایل خطایی پیش آمد",error_extracting:"در هنگام خارک کردن فایل از حالت فشرده خطایی پیش آمد",error_creating_folder:"در هنگام ساخت پوشه خطایی پیش امد",error_getting_content:"در هنگام بارگذاری محتویات فایل خطایی رخ داد",error_changing_perms:"در هنگام تغییر مجوز های فایل خطایی رخ داد",error_uploading_files:"در آپلود فایل خطایی رخ داد",error_installing_url:"هنگام نصب URL خطایی روی داد",error_download_url:"خطایی در دانلود آدرس اینترنتی رخ داده است",sure_to_start_compression_with:"مطمئن هستید فشرده سازی انجام شد؟",owner:"مالک فایل",group:"گروه",others:"دیگران",read:"خواندن",write:"نوشتن",exec:"اجرا کردن",original:"اصلی",changes:"تغییرات",recursive:"بازگشتی",preview:"پیش نمایش",open:"باز کردن",these_elements:"تعداد {{total}} مورد",new_folder:"پوشه جدید",download_as_zip:"به عنوان فایل فشرده دانلود شود"}),e.translations("pl",{filemanager:"Menadżer plików",language:"Język",english:"Angielski",spanish:"Hiszpański",portuguese:"Portugalski",french:"Francuski",german:"Niemiecki",hebrew:"Hebrajski",italian:"Włoski",slovak:"Słowacki",chinese_tw:"Tradycyjny Chiński",chinese_cn:"Chiński Uproszczony",russian:"Rosyjski",ukrainian:"Ukraiński",turkish:"Turecki",persian:"Perski",polish:"Polski",confirm:"Potwierdź",cancel:"Anuluj",close:"Zamknij",upload_files:"Wgraj pliki",files_will_uploaded_to:"Pliki będą umieszczone w katalogu",select_files:"Wybierz pliki",uploading:"Ładowanie",permissions:"Uprawnienia",select_destination_folder:"Wybierz folder docelowy",source:"Źródło",destination:"Cel",copy_file:"Kopiuj plik",sure_to_delete:"Jesteś pewien, że chcesz skasować",change_name_move:"Zmień nazwę / przenieś",enter_new_name_for:"Wpisz nową nazwę dla",extract_item:"Rozpakuj element",extraction_started:"Rozpakowywanie rozpoczęło się w tle",compression_started:"Kompresowanie rozpoczęło się w tle",enter_folder_name_for_extraction:"Wpisz nazwę folderu do rozpakowania",enter_file_name_for_compression:"Wpisz nazwę folderu do skompresowania",toggle_fullscreen:"Tryb pełnoekranowy",edit_file:"Edytuj plik",file_content:"Zawartość pliku",loading:"Ładowanie",search:"Szukaj",create_folder:"Stwórz folder",create:"Utwórz",file_name:"Nazwa pliku",folder_name:"Nazwa folderu",install_url:"Zainstalować URL",download_url:"Pobierz adres URL",url:"URL",upload:"Wgraj",change_permissions:"Zmień uprawnienia",change:"Zmień",details:"Szczegóły",icons:"Ikony",list:"Lista",name:"Nazwa",size:"Rozmiar",actions:"Akcje",date:"Data",selection:"Zaznaczone",no_files_in_folder:"Brak plików w tym folderze",no_folders_in_folder:"Ten folder nie zawiera podfolderów",select_this:"Wybierz ten",go_back:"W górę",wait:"Wait",move:"Przenieś",download:"Pobierz",view_item:"Wyświetl",remove:"Usuń",edit:"Edycja",save:"Edycja",copy:"Kopiuj",rename:"Zmień nazwę",extract:"Rozpakuj",compress:"Skompresuj",install:"Zainstalować",install_with_alldebrid:"Zainstaluj przez AllDebrid",install_with_realdebrid:"Zainstaluj przez Real-Debrid",install_enable_rpi:"Zainstaluj bezpośrednio z adresu URL",install_use_disk_cache:"Włącz buforowanie na dysku",download_with_alldebrid:"Pobierz przez AllDebrid",download_with_realdebrid:"Pobierz przez Real-Debrid",error_invalid_filename:"Błędna nazwa pliku lub plik o takiej nazwie już istnieje, proszę użyć innej nazwy",error_modifying:"Wystąpił błąd podczas modyfikowania pliku",error_deleting:"Wystąpił błąd podczas usuwania pliku lub folderu",error_renaming:"Wystąpił błąd podczas zmiany nazwy pliku",error_copying:"Wystąpił błąd podczas kopiowania pliku",error_compressing:"Wystąpił błąd podczas kompresowania pliku lub folderu",error_extracting:"Wystąpił błąd podczas rozpakowywania pliku",error_creating_folder:"Wystąpił błąd podczas tworzenia nowego folderu",error_getting_content:"Wystąpił błąd podczas pobierania zawartości pliku",error_changing_perms:"Wystąpił błąd podczas zmiany uprawnień pliku",error_uploading_files:"Wystąpił błąd podczas wgrywania plików",error_installing_url:"Podczas instalowania adresu URL wystąpił błąd",error_download_url:"Wystąpił błąd podczas pobierania adresu URL",sure_to_start_compression_with:"Jesteś pewien, że chcesz skompresować",owner:"Właściciel",group:"Grupa",others:"Inni",read:"Odczyt",write:"Zapis",exec:"Wykonywanie",original:"Oryginał",changes:"Zmiany",recursive:"Rekursywnie",preview:"Podgląd elementu",open:"Otwórz",these_elements:"te {{total}} elementy?",new_folder:"Nowy folder",download_as_zip:"Pobierz jako ZIP"}),e.translations("it",{filemanager:"Gestore File",language:"Lingua",english:"Inglese",spanish:"Spagnolo",portuguese:"Portoghese",french:"Francese",german:"Tedesco",hebrew:"Ebraico",slovak:"Slovacco",chinese_tw:"Cinese Tradizionale",chinese_cn:"Cinese",russian:"Russo",ukrainian:"Ucraino",turkish:"Turco",persian:"Persiano",polish:"Polacco",confirm:"Conferma",cancel:"Annulla",close:"Chiudi",upload_files:"Carica files",files_will_uploaded_to:"I files saranno caricati in",select_files:"Seleziona i files",uploading:"Trasferimento",permissions:"Permessi",select_destination_folder:"Select carterlla di destinazione",source:"Sorgente",destination:"Destinazione",copy_file:"Copia file",sure_to_delete:"Sicuro di voler eliminare",change_name_move:"Rinomina / sposta",enter_new_name_for:"Inserisci nuovo nome per",extract_item:"Estrai elemento",extraction_started:"Decompressione avviata da un processo in background",compression_started:"Compressione avviata da un processo in background",enter_folder_name_for_extraction:"Inserisci nome cartella per l'estrazione di",enter_file_name_for_compression:"Inserisci nome file per la compressione di",toggle_fullscreen:"Passa a schermo intero",edit_file:"Modifica file",file_content:"Contenuto del file",loading:"Caricamento",search:"Cerca",create_folder:"Crea cartella",create:"Crea",file_name:"Nome del file",folder_name:"Nome cartella",install_url:"Installare URL",download_url:"Scarica l'URL",url:"URL",upload:"Upload",change_permissions:"Modifica permessi",change:"Modifica",details:"Dettagli",icons:"Icone",list:"Lista",name:"Nome",size:"Dimensione",actions:"Azioni",date:"Data",selection:"Selezione",no_files_in_folder:"Nessun file nella cartella",no_folders_in_folder:"Questa cartella non contiene altre cartelle",select_this:"Seleziona questo",go_back:"Indietro",wait:"Attendere",move:"Sposta",download:"Scarica",view_item:"Visualizza elemento",remove:"Elimina",edit:"Modifica",save:"Modifica",copy:"Copia",rename:"Rinomina",extract:"Estrai",compress:"Comprimi",install:"Installare",install_with_alldebrid:"Installa tramite AllDebrid",install_with_realdebrid:"Installa tramite Real-Debrid",install_enable_rpi:"Installa direttamente dall'URL",install_use_disk_cache:"Abilita la memorizzazione nella cache su disco",download_with_alldebrid:"Scarica tramite AllDebrid",download_with_realdebrid:"Scarica tramite Real-Debrid",error_invalid_filename:"Nome file non valido o già esistente, specificarne un'altro",error_modifying:"Errore durante la modifica del file",error_deleting:"Errore durante l'eliminazione del file o della cartella",error_renaming:"Errore durante la rinomina del file",error_copying:"Errore durante la copia del file",error_compressing:"Errore durante la compressione del file o della cartella",error_extracting:"Errore durante l'estrazione del file",error_creating_folder:"Errore nella creazione della cartella",error_getting_content:"Errore nel recupero del contenuto del file",error_changing_perms:"Errore durante la modifica dei permessi del file",error_uploading_files:"Errore durante il trasferimento dei files",error_installing_url:"Si è verificato un errore durante l'installazione dell'URL",error_download_url:"Si è verificato un errore durante il download dell'URL",sure_to_start_compression_with:"Sicuro di voler comprimere",owner:"Proprietario",group:"Gruppo",others:"Altri",read:"Lettura",write:"Scrittura",exec:"Esecuzione",original:"Originario",changes:"Cambiamenti",recursive:"Ricorsivo",preview:"Anteprima",open:"Apri",these_elements:"questi {{total}} elementi",new_folder:"Nuova cartella",download_as_zip:"Scarica come file ZIP"})}])}(),function(e){"use strict";angular.module("FileManagerApp").service("apiHandler",["$http","$q","$window","$translate","$httpParamSerializer","Upload",function(e,n,a,r,i,t){e.defaults.headers.common["X-Requested-With"]="XMLHttpRequest";var l=function(){this.inprocess=!1,this.asyncSuccess=!1,this.error=""};return l.prototype.deferredHandler=function(e,n,a,r){return e&&"object"==typeof e||(this.error="Error %s - Bridge response error, please check the API docs or this ajax response.".replace("%s",a)),404==a&&(this.error="Error 404 - Backend bridge is not working, please check the ajax response."),e.result&&e.result.error&&(this.error=e.result.error),!this.error&&e.error&&(this.error=e.error.message),!this.error&&r&&(this.error=r),this.error?n.reject(e):n.resolve(e)},l.prototype.list=function(a,r,i,t){var l=this,o=i||l.deferredHandler,s=n.defer(),d={action:"list",path:r,fileExtensions:t&&t.length?t:void 0};return l.inprocess=!0,l.error="",e.post(a,d).then(function(e){o(e.data,s,e.status)},function(e){o(e.data,s,e.status,"Unknown error listing, check the response")}).finally(function(){l.inprocess=!1}),s.promise},l.prototype.copy=function(a,i,t,l){var o=this,s=n.defer(),d={action:"copy",items:i,newPath:t};return l&&1===i.length&&(d.singleFilename=l),o.inprocess=!0,o.error="",e.post(a,d).then(function(e){o.deferredHandler(e.data,s,e.status)},function(e){o.deferredHandler(e.data,s,e.status,r.instant("error_copying"))}).finally(function(){o.inprocess=!1}),s.promise},l.prototype.move=function(a,i,t){var l=this,o=n.defer(),s={action:"move",items:i,newPath:t};return l.inprocess=!0,l.error="",e.post(a,s).then(function(e){l.deferredHandler(e.data,o,e.status)},function(e){l.deferredHandler(e.data,o,e.status,r.instant("error_moving"))}).finally(function(){l.inprocess=!1}),o.promise},l.prototype.remove=function(a,i){var t=this,l=n.defer(),o={action:"remove",items:i};return t.inprocess=!0,t.error="",e.post(a,o).then(function(e){t.deferredHandler(e.data,l,e.status)},function(e){t.deferredHandler(e.data,l,e.status,r.instant("error_deleting"))}).finally(function(){t.inprocess=!1}),l.promise},l.prototype.install=function(a,i){var t=this,l=n.defer(),o={action:"install",items:i};return t.inprocess=!0,t.error="",e.post(a,o).then(function(e){t.deferredHandler(e.data,l,e.status)},function(e){t.deferredHandler(e.data,l,e.status,r.instant("error_installing"))}).finally(function(){t.inprocess=!1}),l.promise},l.prototype.upload=function(e,a,r,i,l){var o=this,s=n.defer();o.inprocess=!0,o.progress=0,o.error="",o.total_size=0,o.total_loaded=0,o.status=[];for(d=0;d<l.length;d++)o.status[l[d].name]={},o.total_size+=l[d].size;for(var d=0;d<l.length;d++){var c={destination:i,file:l[d]};o.status[l[d].name].size=l[d].size,o.status[l[d].name].loaded=0,o.status.push(o.status[l[d].name]),t.upload({url:e,data:c,resumeSizeUrl:a+"?destination="+encodeURIComponent(i)+"&filename="+encodeURIComponent(l[d].name),resumeChunkSize:r}).then(function(e){o.total_loaded>=o.total_size&&o.deferredHandler(e.data,s,e.status)},function(e){o.deferredHandler(e.data,s,e.status,"Unknown error uploading files")},function(e){o.status[e.config._file.name].loaded=e.loaded;for(var n=0,a=0;a<o.status.length;a++)n+=o.status[a].loaded;o.total_loaded=n,o.progress=Math.min(100,parseInt(100*n/o.total_size))-1}).finally(function(){o.total_loaded>=o.total_size&&(o.inprocess=!1,o.progress=0,o.status=[])})}return s.promise},l.prototype.getContent=function(a,i){var t=this,l=n.defer(),o={action:"getContent",item:i};return t.inprocess=!0,t.error="",e.post(a,o).then(function(e){t.deferredHandler(e.data,l,e.status)},function(e){t.deferredHandler(e.data,l,e.status,r.instant("error_getting_content"))}).finally(function(){t.inprocess=!1}),l.promise},l.prototype.edit=function(a,i,t){var l=this,o=n.defer(),s={action:"edit",item:i,content:t};return l.inprocess=!0,l.error="",e.post(a,s).then(function(e){l.deferredHandler(e.data,o,e.status)},function(e){l.deferredHandler(e.data,o,e.status,r.instant("error_modifying"))}).finally(function(){l.inprocess=!1}),o.promise},l.prototype.rename=function(a,i,t){var l=this,o=n.defer(),s={action:"rename",item:i,newItemPath:t};return l.inprocess=!0,l.error="",e.post(a,s).then(function(e){l.deferredHandler(e.data,o,e.status)},function(e){l.deferredHandler(e.data,o,e.status,r.instant("error_renaming"))}).finally(function(){l.inprocess=!1}),o.promise},l.prototype.getUrl=function(e,n){return n&&[e,i({action:"download",path:n})].join("?")},l.prototype.download=function(i,t,l,o,s){var d=this,c=this.getUrl(i,t);if(!o||s||!a.saveAs)return!a.saveAs&&a.console.log("Your browser dont support ajax download, downloading by default"),!!a.open(c,"_blank","");var p=n.defer();return d.inprocess=!0,e.get(c).then(function(e){var n=new a.Blob([e.data]);p.resolve(e.data),a.saveAs(n,l)},function(e){d.deferredHandler(e.data,p,e.status,r.instant("error_downloading"))}).finally(function(){d.inprocess=!1}),p.promise},l.prototype.downloadMultiple=function(t,l,o,s,d){var c=this,p=n.defer(),u=[t,i({action:"downloadMultiple",items:l,toFilename:o})].join("?");return s&&!d&&a.saveAs?(c.inprocess=!0,e.get(t).then(function(e){var n=new a.Blob([e.data]);p.resolve(e.data),a.saveAs(n,o)},function(e){c.deferredHandler(e.data,p,e.status,r.instant("error_downloading"))}).finally(function(){c.inprocess=!1}),p.promise):(!a.saveAs&&a.console.log("Your browser dont support ajax download, downloading by default"),!!a.open(u,"_blank",""))},l.prototype.compress=function(a,i,t,l){var o=this,s=n.defer(),d={action:"compress",items:i,destination:l,compressedFilename:t};return o.inprocess=!0,o.error="",e.post(a,d).then(function(e){o.deferredHandler(e.data,s,e.status)},function(e){o.deferredHandler(e.data,s,e.status,r.instant("error_compressing"))}).finally(function(){o.inprocess=!1}),s.promise},l.prototype.extract=function(a,i,t,l){var o=this,s=n.defer(),d={action:"extract",item:i,destination:l,folderName:t};return o.inprocess=!0,o.error="",e.post(a,d).then(function(e){o.deferredHandler(e.data,s,e.status)},function(e){o.deferredHandler(e.data,s,e.status,r.instant("error_extracting"))}).finally(function(){o.inprocess=!1}),s.promise},l.prototype.changePermissions=function(a,i,t,l,o){var s=this,d=n.defer(),c={action:"changePermissions",items:i,perms:t,permsCode:l,recursive:!!o};return s.inprocess=!0,s.error="",e.post(a,c).then(function(e){s.deferredHandler(e.data,d,e.status)},function(e){s.deferredHandler(e.data,d,e.status,r.instant("error_changing_perms"))}).finally(function(){s.inprocess=!1}),d.promise},l.prototype.createFolder=function(a,i){var t=this,l=n.defer(),o={action:"createFolder",newPath:i};return t.inprocess=!0,t.error="",e.post(a,o).then(function(e){t.deferredHandler(e.data,l,e.status)},function(e){t.deferredHandler(e.data,l,e.status,r.instant("error_creating_folder"))}).finally(function(){t.inprocess=!1}),l.promise},l.prototype.installUrl=function(a,i,t,l,o,s){var d=this,c=n.defer(),p={action:"installUrl",url:i,use_alldebrid:t,use_realdebrid:l,enable_rpi:o,use_disk_cache:s};return d.inprocess=!0,d.error="",e.post(a,p).then(function(e){d.deferredHandler(e.data,c,e.status)},function(e){d.deferredHandler(e.data,c,e.status,r.instant("error_installing_url"))}).finally(function(){d.inprocess=!1}),c.promise},l.prototype.downloadUrl=function(a,i,t,l,o){var s=this,d=n.defer(),c={action:"downloadUrl",url:i,dest:t,use_alldebrid:l,use_realdebrid:o};return s.inprocess=!0,s.error="",e.post(a,c).then(function(e){s.deferredHandler(e.data,d,e.status)},function(e){s.deferredHandler(e.data,d,e.status,r.instant("error_download_url"))}).finally(function(){s.inprocess=!1}),d.promise},l}])}(),function(e){"use strict";angular.module("FileManagerApp").service("apiMiddleware",["$window","fileManagerConfig","apiHandler",function(e,n,a){var r=function(){this.apiHandler=new a};return r.prototype.getPath=function(e){return"/"+e.join("/")},r.prototype.getFileList=function(e){return(e||[]).map(function(e){return e&&e.model.fullPath()})},r.prototype.getFilePath=function(e){return e&&e.model.fullPath()},r.prototype.list=function(e,a){return this.apiHandler.list(n.listUrl,this.getPath(e),a)},r.prototype.copy=function(e,a){var r=this.getFileList(e),i=1===r.length?e[0].tempModel.name:void 0;return this.apiHandler.copy(n.copyUrl,r,this.getPath(a),i)},r.prototype.move=function(e,a){var r=this.getFileList(e);return this.apiHandler.move(n.moveUrl,r,this.getPath(a))},r.prototype.remove=function(e){var a=this.getFileList(e);return this.apiHandler.remove(n.removeUrl,a)},r.prototype.install=function(e){var a=this.getFileList(e);return this.apiHandler.install(n.installUrl,a)},r.prototype.downloadUrl=function(e){var a=this.getFileList(e);return this.apiHandler.downloadUrl(n.downloadUrl,a)},r.prototype.upload=function(a,r){if(!e.FormData)throw new Error("Unsupported browser version");var i=this.getPath(r);return this.apiHandler.upload(n.uploadUrl,n.uploadResumeSizeUrl,n.resumeChunkSize,i,a)},r.prototype.getContent=function(e){var a=this.getFilePath(e);return this.apiHandler.getContent(n.getContentUrl,a)},r.prototype.edit=function(e){var a=this.getFilePath(e);return this.apiHandler.edit(n.editUrl,a,e.tempModel.content)},r.prototype.rename=function(e){var a=this.getFilePath(e),r=e.tempModel.fullPath();return this.apiHandler.rename(n.renameUrl,a,r)},r.prototype.getUrl=function(e){var a=this.getFilePath(e);return this.apiHandler.getUrl(n.downloadFileUrl,a)},r.prototype.download=function(e,a){var r=this.getFilePath(e),i=e.model.name;if(!e.isFolder())return this.apiHandler.download(n.downloadFileUrl,r,i,n.downloadFilesByAjax,a)},r.prototype.downloadMultiple=function(e,a){var r=this.getFileList(e),i=(new Date).getTime().toString().substr(8,13)+"-"+n.multipleDownloadFileName;return this.apiHandler.downloadMultiple(n.downloadMultipleUrl,r,i,n.downloadFilesByAjax,a)},r.prototype.compress=function(e,a,r){var i=this.getFileList(e);return this.apiHandler.compress(n.compressUrl,i,a,this.getPath(r))},r.prototype.extract=function(e,a,r){var i=this.getFilePath(e);return this.apiHandler.extract(n.extractUrl,i,a,this.getPath(r))},r.prototype.changePermissions=function(e,a){var r=this.getFileList(e),i=a.tempModel.perms.toCode(),t=a.tempModel.perms.toOctal(),l=!!a.tempModel.recursive;return this.apiHandler.changePermissions(n.permissionsUrl,r,i,t,l)},r.prototype.createFolder=function(e){var a=e.tempModel.fullPath();return this.apiHandler.createFolder(n.createFolderUrl,a)},r.prototype.installUrl=function(e){var a=e.tempModel.name,r=e.tempModel.use_alldebrid,i=e.tempModel.use_realdebrid,t=e.tempModel.use_disk_cache,l=e.tempModel.enable_rpi;return this.apiHandler.installUrl(n.installUrlUrl,a,r,i,l,t)},r.prototype.downloadUrl=function(e){var a=e.tempModel.content,r=e.tempModel.path+e.tempModel.desc,i=e.tempModel.use_alldebrid,t=e.tempModel.use_realdebrid;return this.apiHandler.downloadUrl(n.downloadUrlUrl,a,r,i,t)},r}])}(),function(e){"use strict";angular.module("FileManagerApp").service("fileNavigator",["apiMiddleware","fileManagerConfig","item",function(e,n,a){var r=function(){this.apiMiddleware=new e,this.requesting=!1,this.fileList=[],this.currentPath=this.getBasePath(),this.history=[],this.error="",this.onRefresh=function(){}};return r.prototype.getBasePath=function(){var e=(n.basePath||"").replace(/^\//,"");return e.trim()?e.split("/"):[]},r.prototype.deferredHandler=function(e,n,a,r){return e&&"object"==typeof e||(this.error="Error %s - Bridge response error, please check the API docs or this ajax response.".replace("%s",a)),404==a&&(this.error="Error 404 - Backend bridge is not working, please check the ajax response."),200==a&&(this.error=null),!this.error&&e.result&&e.result.error&&(this.error=e.result.error),!this.error&&e.error&&(this.error=e.error.message),!this.error&&r&&(this.error=r),this.error?n.reject(e):n.resolve(e)},r.prototype.list=function(){return this.apiMiddleware.list(this.currentPath,this.deferredHandler.bind(this))},r.prototype.refresh=function(){var e=this;e.currentPath.length||(e.currentPath=this.getBasePath());var n=e.currentPath.join("/");return e.requesting=!0,e.fileList=[],e.list().then(function(r){e.fileList=(r.result||[]).map(function(n){return new a(n,e.currentPath)}),e.buildTree(n),e.onRefresh()}).finally(function(){e.requesting=!1})},r.prototype.buildTree=function(e){function n(e,a,r){var i=r?r+"/"+a.model.name:a.model.name;if(e.name&&e.name.trim()&&0!==r.trim().indexOf(e.name)&&(e.nodes=[]),e.name!==r)e.nodes.forEach(function(e){n(e,a,r)});else{for(var t in e.nodes)if(e.nodes[t].name===i)return;e.nodes.push({item:a,name:i,nodes:[]})}e.nodes=e.nodes.sort(function(e,n){return e.name.toLowerCase()<n.name.toLowerCase()?-1:e.name.toLowerCase()===n.name.toLowerCase()?0:1})}function r(e,n){n.push(e);for(var a in e.nodes)r(e.nodes[a],n)}var i=[],t={};!this.history.length&&this.history.push({name:this.getBasePath()[0]||"",nodes:[]}),r(this.history[0],i),(t=function(e,n){return e.filter(function(e){return e.name===n})[0]}(i,e))&&(t.nodes=[]);for(var l in this.fileList){var o=this.fileList[l];o instanceof a&&o.isFolder()&&n(this.history[0],o,e)}},r.prototype.folderClick=function(e){this.currentPath=[],e&&e.isFolder()&&(this.currentPath=e.model.fullPath().split("/").splice(1)),this.refresh()},r.prototype.upDir=function(){this.currentPath[0]&&(this.currentPath=this.currentPath.slice(0,-1),this.refresh())},r.prototype.goTo=function(e){this.currentPath=this.currentPath.slice(0,e+1),this.refresh()},r.prototype.fileNameExists=function(e){return this.fileList.find(function(n){return e&&n.model.name.trim()===e.trim()})},r.prototype.listHasFolders=function(){return this.fileList.find(function(e){return"dir"===e.model.type})},r.prototype.getCurrentFolderName=function(){return this.currentPath.slice(-1)[0]||"/"},r}])}(),function(e){"use strict";angular.module("FileManagerApp").service("chmod",function(){var e=function(e){if(this.owner=this.getRwxObj(),this.group=this.getRwxObj(),this.others=this.getRwxObj(),e){var n=isNaN(e)?this.convertfromCode(e):this.convertfromOctal(e);if(!n)throw new Error("Invalid chmod input data (%s)".replace("%s",e));this.owner=n.owner,this.group=n.group,this.others=n.others}};return e.prototype.toOctal=function(e,n){var a=[];return["owner","group","others"].forEach(function(e,n){a[n]=this[e].read&&this.octalValues.read||0,a[n]+=this[e].write&&this.octalValues.write||0,a[n]+=this[e].exec&&this.octalValues.exec||0}.bind(this)),(e||"")+a.join("")+(n||"")},e.prototype.toCode=function(e,n){var a=[];return["owner","group","others"].forEach(function(e,n){a[n]=this[e].read&&this.codeValues.read||"-",a[n]+=this[e].write&&this.codeValues.write||"-",a[n]+=this[e].exec&&this.codeValues.exec||"-"}.bind(this)),(e||"")+a.join("")+(n||"")},e.prototype.getRwxObj=function(){return{read:!1,write:!1,exec:!1}},e.prototype.octalValues={read:4,write:2,exec:1},e.prototype.codeValues={read:"r",write:"w",exec:"x"},e.prototype.convertfromCode=function(e){if(e=(""+e).replace(/\s/g,""),e=10===e.length?e.substr(1):e,/^[-rwxts]{9}$/.test(e)){var n=[],a=e.match(/.{1,3}/g);for(var r in a){var i=this.getRwxObj();i.read=/r/.test(a[r]),i.write=/w/.test(a[r]),i.exec=/x|t/.test(a[r]),n.push(i)}return{owner:n[0],group:n[1],others:n[2]}}},e.prototype.convertfromOctal=function(e){if(e=(""+e).replace(/\s/g,""),e=4===e.length?e.substr(1):e,/^[0-7]{3}$/.test(e)){var n=[],a=e.match(/.{1}/g);for(var r in a){var i=this.getRwxObj();i.read=/[4567]/.test(a[r]),i.write=/[2367]/.test(a[r]),i.exec=/[1357]/.test(a[r]),n.push(i)}return{owner:n[0],group:n[1],others:n[2]}}},e})}(),function(e){"use strict";e.module("FileManagerApp").factory("item",["fileManagerConfig","chmod",function(n,a){var r=function(n,r){var i={name:n&&n.name||"",path:r||[],type:n&&n.type||"file",size:n&&parseInt(n.size||0),date:function(e){var n=(e||"").toString().split(/[- :]/);return new Date(n[0],n[1]-1,n[2],n[3],n[4],n[5])}(n&&n.date),perms:new a(n&&n.rights),content:n&&n.content||"",desc:n&&n.desc||"",recursive:!1,use_alldebrid:!1,use_realdebrid:!1,use_disk_cache:!1,enable_rpi:!0,fullPath:function(){return("/"+this.path.filter(Boolean).join("/")+"/"+this.name).replace(/\/\//,"/")}};this.error="",this.processing=!1,this.model=e.copy(i),this.tempModel=e.copy(i)};return r.prototype.update=function(){e.extend(this.model,e.copy(this.tempModel))},r.prototype.revert=function(){e.extend(this.tempModel,e.copy(this.model)),this.error=""},r.prototype.isFolder=function(){return"dir"===this.model.type},r.prototype.isEditable=function(){return!this.isFolder()&&n.isEditableFilePattern.test(this.model.name)},r.prototype.isImage=function(){return n.isImageFilePattern.test(this.model.name)},r.prototype.isCompressible=function(){return!0},r.prototype.isExtractable=function(){return!this.isFolder()&&n.isExtractableFilePattern.test(this.model.name)},r.prototype.isInstallable=function(){return!this.isFolder()&&n.isInstallableFilePattern.test(this.model.name)},r.prototype.isSelectable=function(){return this.isFolder()&&n.allowedActions.pickFolders||!this.isFolder()&&n.allowedActions.pickFiles},r}])}(angular),angular.module("FileManagerApp").run(["$templateCache",function(e){e.put("src/templates/current-folder-breadcrumb.html",'<ol class="breadcrumb">\n <li>\n <a href="" ng-click="fileNavigator.goTo(-1)">\n {{"filemanager" | translate}}\n </a>\n </li>\n <li ng-repeat="(key, dir) in fileNavigator.currentPath track by key" ng-class="{\'active\':$last}" class="animated fast fadeIn">\n <a href="" ng-show="!$last" ng-click="fileNavigator.goTo(key)">\n {{dir | strLimit : 8}}\n </a>\n <span ng-show="$last">\n {{dir | strLimit : 12}}\n </span>\n </li>\n</ol>'),e.put("src/templates/item-context-menu.html",'<div id="context-menu" class="dropdown clearfix animated fast fadeIn">\n <ul class="dropdown-menu dropdown-right-click" role="menu" aria-labelledby="dropdownMenu" ng-show="temps.length">\n\n <li ng-show="singleSelection() && singleSelection().isFolder()">\n <a href="" tabindex="-1" ng-click="smartClick(singleSelection())">\n <i class="glyphicon glyphicon-folder-open"></i> {{\'open\' | translate}}\n </a>\n </li>\n\n <li ng-show="config.pickCallback && singleSelection() && singleSelection().isSelectable()">\n <a href="" tabindex="-1" ng-click="config.pickCallback(singleSelection().model)">\n <i class="glyphicon glyphicon-hand-up"></i> {{\'select_this\' | translate}}\n </a>\n </li>\n\n <li ng-show="config.allowedActions.download && !selectionHas(\'dir\') && singleSelection()">\n <a href="" tabindex="-1" ng-click="download()">\n <i class="glyphicon glyphicon-cloud-download"></i> {{\'download\' | translate}}\n </a>\n </li>\n\n <li ng-show="config.allowedActions.downloadMultiple && !singleSelection()">\n <a href="" tabindex="-1" ng-click="download()">\n <i class="glyphicon glyphicon-cloud-download"></i> {{\'download_as_zip\' | translate}}\n </a>\n </li>\n\n <li ng-show="config.allowedActions.preview && singleSelection().isImage() && singleSelection()">\n <a href="" tabindex="-1" ng-click="openImagePreview()">\n <i class="glyphicon glyphicon-picture"></i> {{\'view_item\' | translate}}\n </a>\n </li>\n\n <li ng-show="config.allowedActions.rename && singleSelection()">\n <a href="" tabindex="-1" ng-click="modal(\'rename\')">\n <i class="glyphicon glyphicon-edit"></i> {{\'rename\' | translate}}\n </a>\n </li>\n\n <li ng-show="config.allowedActions.move">\n <a href="" tabindex="-1" ng-click="modalWithPathSelector(\'move\')">\n <i class="glyphicon glyphicon-arrow-right"></i> {{\'move\' | translate}}\n </a>\n </li>\n\n <li ng-show="config.allowedActions.copy">\n <a href="" tabindex="-1" ng-click="modalWithPathSelector(\'copy\')">\n <i class="glyphicon glyphicon-log-out"></i> {{\'copy\' | translate}}\n </a>\n </li>\n\n <li ng-show="config.allowedActions.edit && singleSelection() && singleSelection().isEditable()">\n <a href="" tabindex="-1" ng-click="openEditItem()">\n <i class="glyphicon glyphicon-pencil"></i> {{\'edit\' | translate}}\n </a>\n </li>\n\n <li ng-show="config.allowedActions.changePermissions">\n <a href="" tabindex="-1" ng-click="modal(\'changepermissions\')">\n <i class="glyphicon glyphicon-lock"></i> {{\'permissions\' | translate}}\n </a>\n </li>\n\n <li ng-show="config.allowedActions.compress">\n <a href="" tabindex="-1" ng-click="modal(\'compress\')">\n <i class="glyphicon glyphicon-compressed"></i> {{\'compress\' | translate}}\n </a>\n </li>\n\n <li ng-show="config.allowedActions.extract && singleSelection() && singleSelection().isExtractable()">\n <a href="" tabindex="-1" ng-click="modal(\'extract\')">\n <i class="glyphicon glyphicon-export"></i> {{\'extract\' | translate}}\n </a>\n </li>\n\n <li ng-show="config.allowedActions.install && isInstallable()">\n <a href="" tabindex="-1" ng-click="install()">\n <i class="glyphicon glyphicon-wrench"></i> {{\'install\' | translate}}\n </a>\n </li>\n\n <li class="divider" ng-show="config.allowedActions.remove"></li>\n \n <li ng-show="config.allowedActions.remove">\n <a href="" tabindex="-1" ng-click="modal(\'remove\')">\n <i class="glyphicon glyphicon-trash"></i> {{\'remove\' | translate}}\n </a>\n </li>\n\n </ul>\n\n <ul class="dropdown-menu dropdown-right-click" role="menu" aria-labelledby="dropdownMenu" ng-show="!temps.length">\n <li ng-show="config.allowedActions.createFolder">\n <a href="" tabindex="-1" ng-click="modal(\'newfolder\') && prepareNewFolder()">\n <i class="glyphicon glyphicon-plus"></i> {{\'new_folder\' | translate}}\n </a>\n </li>\n <li ng-show="config.allowedActions.upload">\n <a href="" tabindex="-1" ng-click="modal(\'uploadfile\')">\n <i class="glyphicon glyphicon-cloud-upload"></i> {{\'upload_files\' | translate}}\n </a>\n </li>\n <li ng-show="config.allowedActions.install_url">\n <a href="" tabindex="-1" ng-click="modal(\'install_url\') && prepareInstallUrl()">\n <i class="glyphicon glyphicon-wrench"></i> {{\'install_url\' | translate}}\n </a>\n </li>\n <li ng-show="config.allowedActions.download_url">\n <a href="" tabindex="-1" ng-click="modal(\'download_url\') && prepareDownloadUrl()">\n <i class="glyphicon glyphicon-wrench"></i> {{\'download_url\' | translate}}\n </a>\n </li>\n </ul>\n</div>'),e.put("src/templates/main-icons.html",'<div class="iconset noselect">\n <div class="item-list clearfix" ng-click="selectOrUnselect(null, $event)" ng-right-click="selectOrUnselect(null, $event)" prevent="true">\n <div class="col-120" ng-repeat="item in $parent.fileList = (fileNavigator.fileList | filter: {model:{name: query}})" ng-show="!fileNavigator.requesting && !fileNavigator.error">\n <a href="" class="thumbnail text-center" ng-click="selectOrUnselect(item, $event)" ng-dblclick="smartClick(item)" ng-right-click="selectOrUnselect(item, $event)" title="{{item.model.name}} ({{item.model.size | humanReadableFileSize}})" ng-class="{selected: isSelected(item)}">\n <div class="item-icon">\n <i class="glyphicon glyphicon-folder-open" ng-show="item.model.type === \'dir\'"></i>\n <i class="glyphicon glyphicon-file" data-ext="{{ item.model.name | fileExtension }}" ng-show="item.model.type === \'file\'" ng-class="{\'item-extension\': config.showExtensionIcons}"></i>\n </div>\n {{item.model.name | strLimit : 11 }}\n </a>\n </div>\n </div>\n\n <div ng-show="fileNavigator.requesting">\n <div ng-include="config.tplPath + \'/spinner.html\'"></div>\n </div>\n\n <div class="alert alert-warning" ng-show="!fileNavigator.requesting && fileNavigator.fileList.length < 1 && !fileNavigator.error">\n {{"no_files_in_folder" | translate}}...\n </div>\n \n <div class="alert alert-danger" ng-show="!fileNavigator.requesting && fileNavigator.error">\n {{ fileNavigator.error }}\n </div>\n</div>'),e.put("src/templates/main-table-modal.html",'<table class="table table-condensed table-modal-condensed mb0">\n <thead>\n <tr>\n <th>\n <a href="" ng-click="order(\'model.name\')">\n {{"name" | translate}}\n <span class="sortorder" ng-show="predicate[1] === \'model.name\'" ng-class="{reverse:reverse}"></span>\n </a>\n </th>\n <th class="text-right"></th>\n </tr>\n </thead>\n <tbody class="file-item">\n <tr ng-show="fileNavigator.requesting">\n <td colspan="2">\n <div ng-include="config.tplPath + \'/spinner.html\'"></div>\n </td>\n </tr>\n <tr ng-show="!fileNavigator.requesting && !fileNavigator.listHasFolders() && !fileNavigator.error">\n <td>\n {{"no_folders_in_folder" | translate}}...\n </td>\n <td class="text-right">\n <button class="btn btn-sm btn-default" ng-click="fileNavigator.upDir()">{{"go_back" | translate}}</button>\n </td>\n </tr>\n <tr ng-show="!fileNavigator.requesting && fileNavigator.error">\n <td colspan="2">\n {{ fileNavigator.error }}\n </td>\n </tr>\n <tr ng-repeat="item in fileNavigator.fileList | orderBy:predicate:reverse" ng-show="!fileNavigator.requesting && item.model.type === \'dir\'" ng-if="!selectedFilesAreChildOfPath(item)">\n <td>\n <a href="" ng-click="fileNavigator.folderClick(item)" title="{{item.model.name}} ({{item.model.size | humanReadableFileSize}})">\n <i class="glyphicon glyphicon-folder-close"></i>\n {{item.model.name | strLimit : 32}}\n </a>\n </td>\n <td class="text-right">\n <button class="btn btn-sm btn-default" ng-click="select(item)">\n <i class="glyphicon glyphicon-hand-up"></i> {{"select_this" | translate}}\n </button>\n </td>\n </tr>\n </tbody>\n</table>'),e.put("src/templates/main-table.html",'<table class="table mb0 table-files noselect">\n <thead>\n <tr>\n <th>\n <a href="" ng-click="order(\'model.name\')">\n {{"name" | translate}}\n <span class="sortorder" ng-show="predicate[1] === \'model.name\'" ng-class="{reverse:reverse}"></span>\n </a>\n </th>\n <th class="hidden-xs" ng-hide="config.hideSize">\n <a href="" ng-click="order(\'model.size\')">\n {{"size" | translate}}\n <span class="sortorder" ng-show="predicate[1] === \'model.size\'" ng-class="{reverse:reverse}"></span>\n </a>\n </th>\n <th class="hidden-sm hidden-xs" ng-hide="config.hideDate">\n <a href="" ng-click="order(\'model.date\')">\n {{"date" | translate}}\n <span class="sortorder" ng-show="predicate[1] === \'model.date\'" ng-class="{reverse:reverse}"></span>\n </a>\n </th>\n <th class="hidden-sm hidden-xs" ng-hide="config.hidePermissions">\n <a href="" ng-click="order(\'model.permissions\')">\n {{"permissions" | translate}}\n <span class="sortorder" ng-show="predicate[1] === \'model.permissions\'" ng-class="{reverse:reverse}"></span>\n </a>\n </th>\n </tr>\n </thead>\n <tbody class="file-item">\n <tr ng-show="fileNavigator.requesting">\n <td colspan="5">\n <div ng-include="config.tplPath + \'/spinner.html\'"></div>\n </td>\n </tr>\n <tr ng-show="!fileNavigator.requesting &amp;&amp; fileNavigator.fileList.length < 1 &amp;&amp; !fileNavigator.error">\n <td colspan="5">\n {{"no_files_in_folder" | translate}}...\n </td>\n </tr>\n <tr ng-show="!fileNavigator.requesting &amp;&amp; fileNavigator.error">\n <td colspan="5">\n {{ fileNavigator.error }}\n </td>\n </tr>\n <tr class="item-list" ng-repeat="item in $parent.fileList = (fileNavigator.fileList | filter: {model:{name: query}} | orderBy:predicate:reverse)" ng-show="!fileNavigator.requesting" ng-click="selectOrUnselect(item, $event)" ng-dblclick="smartClick(item)" ng-right-click="selectOrUnselect(item, $event)" ng-class="{selected: isSelected(item)}">\n <td>\n <a href="" title="{{item.model.name}} ({{item.model.size | humanReadableFileSize}})">\n <i class="glyphicon glyphicon-folder-close" ng-show="item.model.type === \'dir\'"></i>\n <i class="glyphicon glyphicon-file" ng-show="item.model.type === \'file\'"></i>\n {{item.model.name | strLimit : 64}}\n </a>\n </td>\n <td class="hidden-xs">\n <span ng-show="item.model.type !== \'dir\' || config.showSizeForDirectories">\n {{item.model.size | humanReadableFileSize}}\n </span>\n </td>\n <td class="hidden-sm hidden-xs" ng-hide="config.hideDate">\n {{item.model.date | formatDate }}\n </td>\n <td class="hidden-sm hidden-xs" ng-hide="config.hidePermissions">\n {{item.model.perms.toCode(item.model.type === \'dir\'?\'d\':\'-\')}}\n </td>\n </tr>\n </tbody>\n</table>\n'),e.put("src/templates/main.html",'<div ng-controller="FileManagerCtrl">\n <div ng-include="config.tplPath + \'/navbar.html\'"></div>\n\n <div class="container-fluid">\n <div class="row">\n\n <div class="col-sm-4 col-md-3 sidebar file-tree animated slow fadeIn" ng-include="config.tplPath + \'/sidebar.html\'" ng-show="config.sidebar &amp;&amp; fileNavigator.history[0]">\n </div>\n\n <div class="main" ng-class="config.sidebar &amp;&amp; fileNavigator.history[0] &amp;&amp; \'col-sm-8 col-md-9\'" ngf-model-options="{updateOn: \'drop\', allowInvalid: false, debounce: 0}" ngf-drop="addForUpload($files)" ngf-drag-over-class="\'upload-dragover\'" ngf-multiple="true">\n <div ng-include="config.tplPath + \'/\' + viewTemplate" class="main-navigation clearfix"></div>\n </div>\n </div>\n </div>\n\n <div ng-include="config.tplPath + \'/modals.html\'"></div>\n <div ng-include="config.tplPath + \'/item-context-menu.html\'"></div>\n</div>\n'),e.put("src/templates/modals.html",'<div class="modal animated fadeIn" id="imagepreview">\n <div class="modal-dialog">\n <div class="modal-content">\n <div class="modal-header">\n <button type="button" class="close" data-dismiss="modal">\n <span aria-hidden="true">&times;</span>\n <span class="sr-only">{{"close" | translate}}</span>\n </button>\n <h4 class="modal-title">{{"preview" | translate}}</h4>\n </div>\n <div class="modal-body">\n <div class="text-center">\n <img id="imagepreview-target" class="preview" alt="{{singleSelection().model.name}}" ng-class="{\'loading\': apiMiddleware.apiHandler.inprocess}">\n <span class="label label-warning" ng-show="apiMiddleware.apiHandler.inprocess">{{\'loading\' | translate}} ...</span>\n </div>\n <div ng-include data-src="\'error-bar\'" class="clearfix"></div>\n </div>\n <div class="modal-footer">\n <button type="button" class="btn btn-default" data-dismiss="modal" ng-disabled="apiMiddleware.apiHandler.inprocess">{{"close" | translate}}</button>\n </div>\n </div>\n </div>\n</div>\n\n<div class="modal animated fadeIn" id="remove">\n <div class="modal-dialog">\n <div class="modal-content">\n <form ng-submit="remove()">\n <div class="modal-header">\n <button type="button" class="close" data-dismiss="modal">\n <span aria-hidden="true">&times;</span>\n <span class="sr-only">{{"close" | translate}}</span>\n </button>\n <h4 class="modal-title">{{"confirm" | translate}}</h4>\n </div>\n <div class="modal-body">\n {{\'sure_to_delete\' | translate}} <span ng-include data-src="\'selected-files-msg\'"></span>\n\n <div ng-include data-src="\'error-bar\'" class="clearfix"></div>\n </div>\n <div class="modal-footer">\n <button type="button" class="btn btn-default" data-dismiss="modal" ng-disabled="apiMiddleware.apiHandler.inprocess">{{"cancel" | translate}}</button>\n <button type="submit" class="btn btn-primary" ng-disabled="apiMiddleware.apiHandler.inprocess" autofocus="autofocus">{{"remove" | translate}}</button>\n </div>\n </form>\n </div>\n </div>\n</div>\n\n<div class="modal animated fadeIn" id="move">\n <div class="modal-dialog">\n <div class="modal-content">\n <form ng-submit="move()">\n <div class="modal-header">\n <button type="button" class="close" data-dismiss="modal">\n <span aria-hidden="true">&times;</span>\n <span class="sr-only">{{"close" | translate}}</span>\n </button>\n <h4 class="modal-title">{{\'move\' | translate}}</h4>\n </div>\n <div class="modal-body">\n <div ng-include data-src="\'path-selector\'" class="clearfix"></div>\n <div ng-include data-src="\'error-bar\'" class="clearfix"></div>\n </div>\n <div class="modal-footer">\n <button type="button" class="btn btn-default" data-dismiss="modal" ng-disabled="apiMiddleware.apiHandler.inprocess">{{"cancel" | translate}}</button>\n <button type="submit" class="btn btn-primary" ng-disabled="apiMiddleware.apiHandler.inprocess">{{\'move\' | translate}}</button>\n </div>\n </form>\n </div>\n </div>\n</div>\n\n\n<div class="modal animated fadeIn" id="rename">\n <div class="modal-dialog">\n <div class="modal-content">\n <form ng-submit="rename()">\n <div class="modal-header">\n <button type="button" class="close" data-dismiss="modal">\n <span aria-hidden="true">&times;</span>\n <span class="sr-only">{{"close" | translate}}</span>\n </button>\n <h4 class="modal-title">{{\'rename\' | translate}}</h4>\n </div>\n <div class="modal-body">\n <label class="radio">{{\'enter_new_name_for\' | translate}} <b>{{singleSelection() && singleSelection().model.name}}</b></label>\n <input class="form-control" ng-model="singleSelection().tempModel.name" autofocus="autofocus">\n\n <div ng-include data-src="\'error-bar\'" class="clearfix"></div>\n </div>\n <div class="modal-footer">\n <button type="button" class="btn btn-default" data-dismiss="modal" ng-disabled="apiMiddleware.apiHandler.inprocess">{{"cancel" | translate}}</button>\n <button type="submit" class="btn btn-primary" ng-disabled="apiMiddleware.apiHandler.inprocess">{{\'rename\' | translate}}</button>\n </div>\n </form>\n </div>\n </div>\n</div>\n\n<div class="modal animated fadeIn" id="copy">\n <div class="modal-dialog">\n <div class="modal-content">\n <form ng-submit="copy()">\n <div class="modal-header">\n <button type="button" class="close" data-dismiss="modal">\n <span aria-hidden="true">&times;</span>\n <span class="sr-only">{{"close" | translate}}</span>\n </button>\n <h4 class="modal-title">{{\'copy_file\' | translate}}</h4>\n </div>\n <div class="modal-body">\n <div ng-show="singleSelection()">\n <label class="radio">{{\'enter_new_name_for\' | translate}} <b>{{singleSelection().model.name}}</b></label>\n <input class="form-control" ng-model="singleSelection().tempModel.name" autofocus="autofocus">\n </div>\n\n <div ng-include data-src="\'path-selector\'" class="clearfix"></div>\n <div ng-include data-src="\'error-bar\'" class="clearfix"></div>\n </div>\n <div class="modal-footer">\n <button type="button" class="btn btn-default" data-dismiss="modal" ng-disabled="apiMiddleware.apiHandler.inprocess">{{"cancel" | translate}}</button>\n <button type="submit" class="btn btn-primary" ng-disabled="apiMiddleware.apiHandler.inprocess">{{"copy" | translate}}</button>\n </div>\n </form>\n </div>\n </div>\n</div>\n\n<div class="modal animated fadeIn" id="compress">\n <div class="modal-dialog">\n <div class="modal-content">\n <form ng-submit="compress()">\n <div class="modal-header">\n <button type="button" class="close" data-dismiss="modal">\n <span aria-hidden="true">&times;</span>\n <span class="sr-only">{{"close" | translate}}</span>\n </button>\n <h4 class="modal-title">{{\'compress\' | translate}}</h4>\n </div>\n <div class="modal-body">\n <div ng-show="apiMiddleware.apiHandler.asyncSuccess">\n <div class="label label-success error-msg">{{\'compression_started\' | translate}}</div>\n </div>\n <div ng-hide="apiMiddleware.apiHandler.asyncSuccess">\n <div ng-hide="config.allowedActions.compressChooseName">\n {{\'sure_to_start_compression_with\' | translate}} <b>{{singleSelection().model.name}}</b> ?\n </div>\n <div ng-show="config.allowedActions.compressChooseName">\n <label class="radio">\n {{\'enter_file_name_for_compression\' | translate}}\n <span ng-include data-src="\'selected-files-msg\'"></span>\n </label>\n <input class="form-control" ng-model="temp.tempModel.name" autofocus="autofocus">\n </div>\n </div>\n\n <div ng-include data-src="\'error-bar\'" class="clearfix"></div>\n </div>\n <div class="modal-footer">\n <div ng-show="apiMiddleware.apiHandler.asyncSuccess">\n <button type="button" class="btn btn-default" data-dismiss="modal" ng-disabled="apiMiddleware.apiHandler.inprocess">{{"close" | translate}}</button>\n </div>\n <div ng-hide="apiMiddleware.apiHandler.asyncSuccess">\n <button type="button" class="btn btn-default" data-dismiss="modal" ng-disabled="apiMiddleware.apiHandler.inprocess">{{"cancel" | translate}}</button>\n <button type="submit" class="btn btn-primary" ng-disabled="apiMiddleware.apiHandler.inprocess">{{\'compress\' | translate}}</button>\n </div>\n </div>\n </form>\n </div>\n </div>\n</div>\n\n<div class="modal animated fadeIn" id="extract" ng-init="singleSelection().emptyName()">\n <div class="modal-dialog">\n <div class="modal-content">\n <form ng-submit="extract()">\n <div class="modal-header">\n <button type="button" class="close" data-dismiss="modal">\n <span aria-hidden="true">&times;</span>\n <span class="sr-only">{{"close" | translate}}</span>\n </button>\n <h4 class="modal-title">{{\'extract_item\' | translate}}</h4>\n </div>\n <div class="modal-body">\n <div ng-show="apiMiddleware.apiHandler.asyncSuccess">\n <div class="label label-success error-msg">{{\'extraction_started\' | translate}}</div>\n </div>\n <div ng-hide="apiMiddleware.apiHandler.asyncSuccess">\n <label class="radio">{{\'enter_folder_name_for_extraction\' | translate}} <b>{{singleSelection().model.name}}</b></label>\n <input class="form-control" ng-model="singleSelection().tempModel.name" autofocus="autofocus">\n </div>\n <div ng-include data-src="\'error-bar\'" class="clearfix"></div>\n </div>\n <div class="modal-footer">\n <div ng-show="apiMiddleware.apiHandler.asyncSuccess">\n <button type="button" class="btn btn-default" data-dismiss="modal" ng-disabled="apiMiddleware.apiHandler.inprocess">{{"close" | translate}}</button>\n </div>\n <div ng-hide="apiMiddleware.apiHandler.asyncSuccess">\n <button type="button" class="btn btn-default" data-dismiss="modal" ng-disabled="apiMiddleware.apiHandler.inprocess">{{"cancel" | translate}}</button>\n <button type="submit" class="btn btn-primary" ng-disabled="apiMiddleware.apiHandler.inprocess">{{\'extract\' | translate}}</button>\n </div>\n </div>\n </form>\n </div>\n </div>\n</div>\n\n<div class="modal animated fadeIn" id="edit" ng-class="{\'modal-fullscreen\': fullscreen}">\n <div class="modal-dialog modal-lg">\n <div class="modal-content">\n <form ng-submit="edit()">\n <div class="modal-header">\n <button type="button" class="close" data-dismiss="modal">\n <span aria-hidden="true">&times;</span>\n <span class="sr-only">{{"close" | translate}}</span>\n </button>\n <button type="button" class="close fullscreen" ng-click="fullscreen=!fullscreen">\n <i class="glyphicon glyphicon-fullscreen"></i>\n <span class="sr-only">{{\'toggle_fullscreen\' | translate}}</span>\n </button>\n <h4 class="modal-title">{{\'edit_file\' | translate}}</h4>\n </div>\n <div class="modal-body">\n <label class="radio bold">{{ singleSelection().model.fullPath() }}</label>\n <span class="label label-warning" ng-show="apiMiddleware.apiHandler.inprocess">{{\'loading\' | translate}} ...</span>\n <textarea class="form-control code" ng-model="singleSelection().tempModel.content" ng-show="!apiMiddleware.apiHandler.inprocess" autofocus="autofocus"></textarea>\n <div ng-include data-src="\'error-bar\'" class="clearfix"></div>\n </div>\n <div class="modal-footer">\n <button type="button" class="btn btn-default" data-dismiss="modal" ng-disabled="apiMiddleware.apiHandler.inprocess">{{\'close\' | translate}}</button>\n <button type="submit" class="btn btn-primary" ng-show="config.allowedActions.edit" ng-disabled="apiMiddleware.apiHandler.inprocess">{{\'save\' | translate}}</button>\n </div>\n </form>\n </div>\n </div>\n</div>\n\n<div class="modal animated fadeIn" id="newfolder">\n <div class="modal-dialog">\n <div class="modal-content">\n <form ng-submit="createFolder()">\n <div class="modal-header">\n <button type="button" class="close" data-dismiss="modal">\n <span aria-hidden="true">&times;</span>\n <span class="sr-only">{{"close" | translate}}</span>\n </button>\n <h4 class="modal-title">{{\'new_folder\' | translate}}</h4>\n </div>\n <div class="modal-body">\n <label class="radio">{{\'folder_name\' | translate}}</label>\n <input class="form-control" ng-model="singleSelection().tempModel.name" autofocus="autofocus">\n <div ng-include data-src="\'error-bar\'" class="clearfix"></div>\n </div>\n <div class="modal-footer">\n <button type="button" class="btn btn-default" data-dismiss="modal" ng-disabled="apiMiddleware.apiHandler.inprocess">{{"cancel" | translate}}</button>\n <button type="submit" class="btn btn-primary" ng-disabled="apiMiddleware.apiHandler.inprocess">{{\'create\' | translate}}</button>\n </div>\n </form>\n </div>\n </div>\n</div>\n\n<div class="modal animated fadeIn" id="uploadfile">\n <div class="modal-dialog">\n <div class="modal-content">\n <form>\n <div class="modal-header">\n <button type="button" class="close" data-dismiss="modal">\n <span aria-hidden="true">&times;</span>\n <span class="sr-only">{{"close" | translate}}</span>\n </button>\n <h4 class="modal-title">{{"upload_files" | translate}}</h4>\n </div>\n <div class="modal-body">\n <label class="radio">\n {{"files_will_uploaded_to" | translate}} \n <b>/{{fileNavigator.currentPath.join(\'/\')}}</b>\n </label>\n <button class="btn btn-default btn-block" ngf-select="$parent.addForUpload($files)" ngf-multiple="true">\n {{"select_files" | translate}}\n </button>\n \n <div class="upload-list">\n <ul class="list-group">\n <li class="list-group-item" ng-repeat="(index, uploadFile) in $parent.uploadFileList">\n <button class="btn btn-sm btn-danger pull-right" ng-click="$parent.removeFromUpload(index)">\n &times;\n </button>\n <h5 class="list-group-item-heading">{{uploadFile.name}}</h5>\n <p class="list-group-item-text">{{uploadFile.size | humanReadableFileSize}}</p>\n </li>\n </ul>\n <div ng-show="apiMiddleware.apiHandler.inprocess">\n <em>{{"uploading" | translate}}... {{apiMiddleware.apiHandler.progress}}%</em>\n <div class="progress mb0">\n <div class="progress-bar active" role="progressbar" aria-valuenow="{{apiMiddleware.apiHandler.progress}}" aria-valuemin="0" aria-valuemax="100" style="width: {{apiMiddleware.apiHandler.progress}}%"></div>\n </div>\n </div>\n </div>\n <div ng-include data-src="\'error-bar\'" class="clearfix"></div>\n </div>\n <div class="modal-footer">\n <div>\n <button type="button" class="btn btn-default" data-dismiss="modal">{{"cancel" | translate}}</button>\n <button type="submit" class="btn btn-primary" ng-disabled="!$parent.uploadFileList.length || apiMiddleware.apiHandler.inprocess" ng-click="uploadFiles()">{{\'upload\' | translate}}</button>\n </div>\n </div>\n </form>\n </div>\n </div>\n</div>\n\n<div class="modal animated fadeIn" id="install_url">\n <div class="modal-dialog">\n <div class="modal-content">\n <form ng-submit="installUrl()">\n <div class="modal-header">\n <button type="button" class="close" data-dismiss="modal">\n <span aria-hidden="true">&times;</span>\n <span class="sr-only">{{"close" | translate}}</span>\n </button>\n <h4 class="modal-title">{{\'install_url\' | translate}}</h4>\n </div>\n <div class="modal-body">\n <label class="radio">{{\'url\' | translate}}</label>\n <input class="form-control" ng-model="singleSelection().tempModel.name" autofocus="autofocus"><br/>\n <input type="checkbox" class="form-check-input" ng-model="singleSelection().tempModel.use_alldebrid">\n <label class="form-check-label">{{\'install_with_alldebrid\' | translate}}</label><br/>\n <input type="checkbox" class="form-check-input" ng-model="singleSelection().tempModel.use_realdebrid">\n <label class="form-check-label">{{\'install_with_realdebrid\' | translate}}</label><br/>\n <input type="checkbox" class="form-check-input" ng-model="singleSelection().tempModel.enable_rpi">\n <label class="form-check-label">{{\'install_enable_rpi\' | translate}}</label><br/>\n <input type="checkbox" class="form-check-input" ng-model="singleSelection().tempModel.use_disk_cache">\n <label class="form-check-label">{{\'install_use_disk_cache\' | translate}}</label>\n <div ng-include data-src="\'error-bar\'" class="clearfix"></div>\n </div>\n <div class="modal-footer">\n <button type="button" class="btn btn-default" data-dismiss="modal" ng-disabled="apiMiddleware.apiHandler.inprocess">{{"cancel" | translate}}</button>\n <button type="submit" class="btn btn-primary" ng-disabled="apiMiddleware.apiHandler.inprocess">{{\'install\' | translate}}</button>\n </div>\n </form>\n </div>\n </div>\n</div>\n\n<div class="modal animated fadeIn" id="download_url">\n <div class="modal-dialog">\n <div class="modal-content">\n <form ng-submit="downloadUrl()">\n <div class="modal-header">\n <button type="button" class="close" data-dismiss="modal">\n <span aria-hidden="true">&times;</span>\n <span class="sr-only">{{"close" | translate}}</span>\n </button>\n <h4 class="modal-title">{{\'download_url\' | translate}}</h4>\n </div>\n <div class="modal-body">\n <label class="radio">{{\'url\' | translate}}</label>\n <input class="form-control" ng-model="singleSelection().tempModel.content" autofocus="autofocus">\n <div class="detail-sources">\n <div class="like-code mr5">\n <label class="radio">{{\'select_destination_folder\' | translate}}:</label> {{ getSelectedPath() }}\n </div>\n <a href="" class="label label-primary" ng-click="openNavigator(fileNavigator.currentPath)">\n {{\'change\' | translate}}\n </a>\n </div>\n <label class="radio">{{\'file_name\' | translate}}</label>\n <input class="form-control" ng-model="singleSelection().tempModel.desc"><br/>\n <input type="checkbox" class="form-check-input" ng-model="singleSelection().tempModel.use_alldebrid">\n <label class="form-check-label">{{\'download_with_alldebrid\' | translate}}</label><br/>\n <input type="checkbox" class="form-check-input" ng-model="singleSelection().tempModel.use_realdebrid">\n <label class="form-check-label">{{\'download_with_realdebrid\' | translate}}</label><br/>\n <div ng-include data-src="\'error-bar\'" class="clearfix"></div>\n </div>\n <div class="modal-footer">\n <button type="button" class="btn btn-default" data-dismiss="modal" ng-disabled="apiMiddleware.apiHandler.inprocess">{{"cancel" | translate}}</button>\n <button type="submit" class="btn btn-primary" ng-disabled="apiMiddleware.apiHandler.inprocess">{{\'download\' | translate}}</button>\n </div>\n </form>\n </div>\n </div>\n</div>\n\n<div class="modal animated fadeIn" id="changepermissions">\n <div class="modal-dialog">\n <div class="modal-content">\n <form ng-submit="changePermissions()">\n <div class="modal-header">\n <button type="button" class="close" data-dismiss="modal">\n <span aria-hidden="true">&times;</span>\n <span class="sr-only">{{"close" | translate}}</span>\n </button>\n <h4 class="modal-title">{{\'change_permissions\' | translate}}</h4>\n </div>\n <div class="modal-body">\n <table class="table mb0">\n <thead>\n <tr>\n <th>{{\'permissions\' | translate}}</th>\n <th class="col-xs-1 text-center">{{\'read\' | translate}}</th>\n <th class="col-xs-1 text-center">{{\'write\' | translate}}</th>\n <th class="col-xs-1 text-center">{{\'exec\' | translate}}</th>\n </tr>\n </thead>\n <tbody>\n <tr ng-repeat="(permTypeKey, permTypeValue) in temp.tempModel.perms">\n <td>{{permTypeKey | translate}}</td>\n <td ng-repeat="(permKey, permValue) in permTypeValue" class="col-xs-1 text-center" ng-click="main()">\n <label class="col-xs-12">\n <input type="checkbox" ng-model="temp.tempModel.perms[permTypeKey][permKey]">\n </label>\n </td>\n </tr>\n </tbody>\n </table>\n <div class="checkbox" ng-show="config.enablePermissionsRecursive && selectionHas(\'dir\')">\n <label>\n <input type="checkbox" ng-model="temp.tempModel.recursive"> {{\'recursive\' | translate}}\n </label>\n </div>\n <div class="clearfix mt10">\n <span class="label label-primary pull-left" ng-hide="temp.multiple">\n {{\'original\' | translate}}: \n {{temp.model.perms.toCode(selectionHas(\'dir\') ? \'d\':\'-\')}} \n ({{temp.model.perms.toOctal()}})\n </span>\n <span class="label label-primary pull-right">\n {{\'changes\' | translate}}: \n {{temp.tempModel.perms.toCode(selectionHas(\'dir\') ? \'d\':\'-\')}} \n ({{temp.tempModel.perms.toOctal()}})\n </span>\n </div>\n <div ng-include data-src="\'error-bar\'" class="clearfix"></div>\n </div>\n <div class="modal-footer">\n <button type="button" class="btn btn-default" data-dismiss="modal">{{"cancel" | translate}}</button>\n <button type="submit" class="btn btn-primary" ng-disabled="">{{\'change\' | translate}}</button>\n </div>\n </form>\n </div>\n </div>\n</div>\n\n<div class="modal animated fadeIn" id="selector" ng-controller="ModalFileManagerCtrl">\n <div class="modal-dialog">\n <div class="modal-content">\n <div class="modal-header">\n <button type="button" class="close" data-dismiss="modal">\n <span aria-hidden="true">&times;</span>\n <span class="sr-only">{{"close" | translate}}</span>\n </button>\n <h4 class="modal-title">{{"select_destination_folder" | translate}}</h4>\n </div>\n <div class="modal-body">\n <div>\n <div ng-include="config.tplPath + \'/current-folder-breadcrumb.html\'"></div>\n <div ng-include="config.tplPath + \'/main-table-modal.html\'"></div>\n <hr />\n <button class="btn btn-sm btn-default" ng-click="selectCurrent()">\n <i class="glyphicon"></i> {{"select_this" | translate}}\n </button>\n </div>\n </div>\n <div class="modal-footer">\n <button type="button" class="btn btn-default" data-dismiss="modal" ng-disabled="apiMiddleware.apiHandler.inprocess">{{"close" | translate}}</button>\n </div>\n </div>\n </div>\n</div>\n\n<script type="text/ng-template" id="path-selector">\n <div class="panel panel-primary mt10 mb0">\n <div class="panel-body">\n <div class="detail-sources">\n <div class="like-code mr5"><b>{{"selection" | translate}}:</b>\n <span ng-include="\'selected-files-msg\'"></span>\n </div>\n </div>\n <div class="detail-sources">\n <div class="like-code mr5">\n <b>{{"destination" | translate}}:</b> {{ getSelectedPath() }}\n </div>\n <a href="" class="label label-primary" ng-click="openNavigator(fileNavigator.currentPath)">\n {{\'change\' | translate}}\n </a>\n </div>\n </div>\n </div>\n<\/script>\n\n<script type="text/ng-template" id="error-bar">\n <div class="label label-danger error-msg pull-left animated fadeIn" ng-show="apiMiddleware.apiHandler.error">\n <i class="glyphicon glyphicon-remove-circle"></i>\n <span>{{apiMiddleware.apiHandler.error}}</span>\n </div>\n<\/script>\n\n<script type="text/ng-template" id="selected-files-msg">\n <span ng-show="temps.length == 1">\n {{singleSelection().model.name}}\n </span>\n <span ng-show="temps.length > 1">\n {{\'these_elements\' | translate:totalSelecteds()}}\n <a href="" class="label label-primary" ng-click="showDetails = !showDetails">\n {{showDetails ? \'-\' : \'+\'}} {{\'details\' | translate}}\n </a>\n </span>\n <div ng-show="temps.length > 1 &amp;&amp; showDetails">\n <ul class="selected-file-details">\n <li ng-repeat="tempItem in temps">\n <b>{{tempItem.model.name}}</b>\n </li>\n </ul>\n </div>\n<\/script>\n'),e.put("src/templates/navbar.html",'<nav class="navbar navbar-inverse">\n <div class="container-fluid">\n <div class="row">\n <div class="col-sm-9 col-md-10 hidden-xs">\n <div ng-show="!config.breadcrumb">\n <a class="navbar-brand hidden-xs ng-binding" href="">angular-{{"filemanager" | translate}}</a>\n </div>\n <div ng-include="config.tplPath + \'/current-folder-breadcrumb.html\'" ng-show="config.breadcrumb">\n </div>\n </div>\n <div class="col-sm-3 col-md-2">\n <div class="navbar-collapse">\n <div class="navbar-form navbar-right text-right">\n <div class="pull-left visible-xs" ng-if="fileNavigator.currentPath.length">\n <button class="btn btn-primary btn-flat" ng-click="fileNavigator.upDir()">\n <i class="glyphicon glyphicon-chevron-left"></i>\n </button>\n {{fileNavigator.getCurrentFolderName() | strLimit : 12}}\n </div>\n <div class="btn-group">\n <button class="btn btn-flat btn-sm dropdown-toggle" type="button" id="dropDownMenuSearch" data-toggle="dropdown" aria-expanded="true">\n <i class="glyphicon glyphicon-search mr2"></i>\n </button>\n <div class="dropdown-menu animated fast fadeIn pull-right" role="menu" aria-labelledby="dropDownMenuLang">\n <input type="text" class="form-control" ng-show="config.searchForm" placeholder="{{\'search\' | translate}}..." ng-model="$parent.query">\n </div>\n </div>\n\n <button class="btn btn-flat btn-sm" ng-click="$parent.setTemplate(\'main-icons.html\')" ng-show="$parent.viewTemplate !==\'main-icons.html\'" title="{{\'icons\' | translate}}">\n <i class="glyphicon glyphicon-th-large"></i>\n </button>\n\n <button class="btn btn-flat btn-sm" ng-click="$parent.setTemplate(\'main-table.html\')" ng-show="$parent.viewTemplate !==\'main-table.html\'" title="{{\'list\' | translate}}">\n <i class="glyphicon glyphicon-th-list"></i>\n </button>\n\n <div class="btn-group">\n <button class="btn btn-flat btn-sm dropdown-toggle" type="button" id="dropDownMenuLang" data-toggle="dropdown" aria-expanded="true" ng-show="config.multiLang">\n <i class="glyphicon glyphicon-globe mr2"></i>\n </button>\n\n <ul class="dropdown-menu scrollable-menu animated fast fadeIn pull-right" role="menu" aria-labelledby="dropDownMenuLang">\n <li role="presentation"><a role="menuitem" tabindex="-1" href="" ng-click="changeLanguage(\'en\')">English</a></li>\n <li role="presentation"><a role="menuitem" tabindex="-1" href="" ng-click="changeLanguage(\'zh_tw\')">正體中文</a></li>\n <li role="presentation"><a role="menuitem" tabindex="-1" href="" ng-click="changeLanguage(\'zh_cn\')">简体中文</a></li>\n <li role="presentation"><a role="menuitem" tabindex="-1" href="" ng-click="changeLanguage(\'es\')">Español</a></li>\n <li role="presentation"><a role="menuitem" tabindex="-1" href="" ng-click="changeLanguage(\'nl\')">Nederlands</a></li>\n <li role="presentation"><a role="menuitem" tabindex="-1" href="" ng-click="changeLanguage(\'pt\')">Portugues</a></li>\n <li role="presentation"><a role="menuitem" tabindex="-1" href="" ng-click="changeLanguage(\'fr\')">Français</a></li>\n <li role="presentation"><a role="menuitem" tabindex="-1" href="" ng-click="changeLanguage(\'de\')">Deutsch</a></li>\n <li role="presentation"><a role="menuitem" tabindex="-1" href="" ng-click="changeLanguage(\'he\')">עברי</a></li>\n <li role="presentation"><a role="menuitem" tabindex="-1" href="" ng-click="changeLanguage(\'it\')">italiano</a></li>\n <li role="presentation"><a role="menuitem" tabindex="-1" href="" ng-click="changeLanguage(\'sk\')">Slovenčina</a></li>\n <li role="presentation"><a role="menuitem" tabindex="-1" href="" ng-click="changeLanguage(\'ru\')">русский</a></li>\n <li role="presentation"><a role="menuitem" tabindex="-1" href="" ng-click="changeLanguage(\'ua\')">український</a></li>\n <li role="presentation"><a role="menuitem" tabindex="-1" href="" ng-click="changeLanguage(\'tr\')">Türkçe</a></li>\n <li role="presentation"><a role="menuitem" tabindex="-1" href="" ng-click="changeLanguage(\'fa\')">فارسی</a></li>\n <li role="presentation"><a role="menuitem" tabindex="-1" href="" ng-click="changeLanguage(\'pl\')">Polski</a></li>\n </ul>\n </div>\n\n <div class="btn-group">\n <button class="btn btn-flat btn-sm dropdown-toggle" type="button" id="more" data-toggle="dropdown" aria-expanded="true">\n <i class="glyphicon glyphicon-option-vertical"></i>\n </button>\n\n <ul class="dropdown-menu scrollable-menu animated fast fadeIn pull-right" role="menu" aria-labelledby="more">\n <li role="presentation" ng-show="config.allowedActions.createFolder" ng-click="modal(\'newfolder\') && prepareNewFolder()">\n <a href="" role="menuitem" tabindex="-1">\n <i class="glyphicon glyphicon-plus"></i> {{"new_folder" | translate}}\n </a>\n </li>\n <li role="presentation" ng-show="config.allowedActions.upload" ng-click="modal(\'uploadfile\')">\n <a href="" role="menuitem" tabindex="-1">\n <i class="glyphicon glyphicon-cloud-upload"></i> {{"upload_files" | translate}}\n </a>\n </li>\n <li role="presentation" ng-show="config.allowedActions.install_url" ng-click="modal(\'install_url\') && prepareInstallUrl()">\n <a href="" role="menuitem" tabindex="-1">\n <i class="glyphicon glyphicon-wrench"></i> {{"install_url" | translate}}\n </a>\n </li>\n <li role="presentation" ng-show="config.allowedActions.download_url" ng-click="modal(\'download_url\') && prepareDownloadUrl()">\n <a href="" role="menuitem" tabindex="-1">\n <i class="glyphicon glyphicon-wrench"></i> {{"download_url" | translate}}\n </a>\n </li>\n </ul>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</nav>\n'),e.put("src/templates/sidebar.html",'<ul class="nav nav-sidebar file-tree-root">\n <li ng-repeat="item in fileNavigator.history" ng-include="\'folder-branch-item\'" ng-class="{\'active\': item.name == fileNavigator.currentPath.join(\'/\')}"></li>\n</ul>\n\n<script type="text/ng-template" id="folder-branch-item">\n <a href="" ng-click="fileNavigator.folderClick(item.item)" class="animated fast fadeInDown">\n\n <span class="point">\n <i class="glyphicon glyphicon-chevron-down" ng-show="isInThisPath(item.name)"></i>\n <i class="glyphicon glyphicon-chevron-right" ng-show="!isInThisPath(item.name)"></i>\n </span>\n\n <i class="glyphicon glyphicon-folder-open mr2" ng-show="isInThisPath(item.name)"></i>\n <i class="glyphicon glyphicon-folder-close mr2" ng-show="!isInThisPath(item.name)"></i>\n {{ (item.name.split(\'/\').pop() || fileNavigator.getBasePath().join(\'/\') || \'/\') | strLimit : 30 }}\n </a>\n <ul class="nav nav-sidebar">\n <li ng-repeat="item in item.nodes" ng-include="\'folder-branch-item\'" ng-class="{\'active\': item.name == fileNavigator.currentPath.join(\'/\')}"></li>\n </ul>\n<\/script>'),e.put("src/templates/spinner.html",'<div class="spinner-wrapper col-xs-12">\n <svg class="spinner-container" style="width:65px;height:65px" viewBox="0 0 44 44">\n <circle class="path" cx="22" cy="22" r="20" fill="none" stroke-width="4"></circle>\n </svg>\n</div>')}]);